css abhängig von Datum ändern

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
uwe.ha
Mitglied
Beiträge: 834
Registriert: 18.05.2001 02:00

css abhängig von Datum ändern

Beitrag von uwe.ha »

Hallo zusammen,

zu bestimmten Daten ( 1., 2., 3. ... Advent, Silvester) möchte ich eine andere CSS (mit anderem Hintergrundbild) verwenden.
Bisher habe ich immer manuell hochgeladen.

Kann ich das - irgendwie mit PHP - automatisch machen?

So nach dem Muster:

Code: Alles auswählen

<?
if (datum zwischen 1. und 7.12.2013)
<link rel="stylesheet" href="/menue/menue_adv1.css" type="text/css">
elseif (datum zwischen 8. und 14.12.2013)
<link rel="stylesheet" href="/menue/menue_adv2.css" type="text/css">
usw.
?>
PHP verstehe ich zwar ein kleines bischen; es reicht, um mich an Beispielen entlang zu hangeln, mehr aber nicht. Ein Verweis auf php.net hilft mir also nicht weiter, da es zu speziell ist udn ich es nicht wirklich verstehe.
Aber ein Link auf ein Tutorial, das ich meinen Wünschen anpassen kann, oder sonstige Lösungsansätze, wäre toll.

VIELEN DANK VORAB!
Uwe
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: css abhängig von Datum ändern

Beitrag von Miriam »

Gegen das Nicht-Verstehen gibt es doch Tutorien -> https://wiki.phpbb.com/Tutorial.Template_syntax
Und PHP.net hat auch etliche Beispiele zur Erklärung.

Naja, egal.

Du könntest es so machen:
  • Finde in der /includes/functions.php

    Code: Alles auswählen

        // The following assigns all _common_ variables that may be used at any point in a template.
        $template->assign_vars(array( 
    tausche diesen Code aus gegen:

    Code: Alles auswählen

    /*********************************/
        function advent($data)
        {
            global $user;
            
            $advent = 0;
            $year = date('Y', $data);
    
            $xmas_eve_midnight = gmmktime(0, 0, 0, 12, 24, $year);
            $xmas_eve_day = (int)date('w', $xmas_eve_midnight);
            $first_advent = $xmas_eve_midnight - (21 + $xmas_eve_day) * 86400;
            $first_advent_date = date('nd', $first_advent);
            $user_recent_time = $data - $user->timezone + $user->dst * 3600;
            $user_recent_date = $user->format_date($user_recent_time, 'nd', true);
            if ($first_advent_date <= $user_recent_date && $user_recent_date < 1224)
            {
                $advent = (($user_recent_time - $first_advent) / 86400);
                $advent = (int)($advent / 7) + 1; 
            }
            return $advent;
        }
    /*********************************/
        // The following assigns all _common_ variables that may be used at any point in a template.
        $template->assign_vars(array(
            'ADVENT'                        => advent(time()), 
    Dann kannst Du es bspw. so in Deinem Template auswerten:

    Code: Alles auswählen

    <!-- IF ADVENT == 1 -->
    bla
    <!-- ELSEIF ADVENT == 2 -->
    blub
    <!-- ENDIF --> 
Mehr Infos -> https://wiki.phpbb.com/Tutorial.Templat ... structures

Die Adventszeit geht dann vom 1. Adventssonntag bis einschl. 23.12. des jeweiligen Jahres.
Ab dem 1. Sonntag -> 1. Advent
ab dem 2. Sonntag -> 2. Advent
usw. usf.
Zuletzt geändert von Miriam am 04.12.2013 00:01, insgesamt 1-mal geändert.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
cYbercOsmOnauT
Ehemaliges Teammitglied
Beiträge: 3820
Registriert: 18.02.2004 23:02
Wohnort: Göttingen
Kontaktdaten:

Re: css abhängig von Datum ändern

Beitrag von cYbercOsmOnauT »

Man kann das auch mittels rewrite Direktiven in der htaccess bewerkstelligen. Ist etwas tricky, aber möglich. Im Quellcode verlinkst Du so

Code: Alles auswählen

<link rel="stylesheet" href="/menue/menue.css" type="text/css">
Diese Datei existiert nicht wirklich. Die Arbeit welche echte CSS ausgeliefert werden soll, übernimmt dann mod_rewrite innerhalb der .htaccess des Boardstammverzeichnisses

Code: Alles auswählen

RewriteEngine On
RewriteCond %{TIME_MON}%{TIME_DAY} >1130
RewriteCond %{TIME_MON}%{TIME_DAY} <1208
RewriteRule ^menue/menue.css% /menue/menue_adv1.css

RewriteCond %{TIME_MON}%{TIME_DAY} >1207
RewriteCond %{TIME_MON}%{TIME_DAY} <1215
RewriteRule ^menue/menue.css% /menue/menue_adv2.css

RewriteCond %{TIME_MON}%{TIME_DAY} >1214
RewriteCond %{TIME_MON}%{TIME_DAY} <1222
RewriteRule ^menue/menue.css% /menue/menue_adv3.css

RewriteCond %{TIME_MON}%{TIME_DAY} >1221
RewriteCond %{TIME_MON}%{TIME_DAY} <1229
RewriteRule ^menue/menue.css% /menue/menue_adv4.css
• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
uwe.ha
Mitglied
Beiträge: 834
Registriert: 18.05.2001 02:00

Re: css abhängig von Datum ändern

Beitrag von uwe.ha »

Hallo Miriam,

entschuldige, ich habe vergessen zu betonen, dass es sich NICHT um Code innerhalb phpbb handelt, sondern um Code von meiner Website außerhalb des Forums.

Wenn ich ein Tutorial habe, das zu 95% passt, bekomme ich es - vielleicht - angepasst. Aber für jemanden, der vielleicht 2, 3 Stunden im Jahr sich mit Codeänderungen / PHP beschäftigen muss, ist das nicht ganz so einfach. Aber ich gebe mir ja Mühe ;-)

Es geht also darum, die Zeile

Code: Alles auswählen

<link rel="stylesheet" href="/menue/menue.css" type="text/css">
gegen einen PHP-Code(?) auszutauschen, der - je nach Datumsbereich - eine andere css auswählt.

@ cybercosmonaut:
Ja, diese Richtung hört sich gut an.
Du schreibst "etwas tricky" ... gänge das dann auch über PHP, und wäre das dann weniger "tricky"?

DANKE!
Uwe
Benutzeravatar
cYbercOsmOnauT
Ehemaliges Teammitglied
Beiträge: 3820
Registriert: 18.02.2004 23:02
Wohnort: Göttingen
Kontaktdaten:

Re: css abhängig von Datum ändern

Beitrag von cYbercOsmOnauT »

tricky weil ich es nur aus dem Kopf aufgeschrieben habe. Man müsste es austesten.
• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: css abhängig von Datum ändern

Beitrag von gn#36 »

Wenn du eine PHP Lösung willst: Nimm "einfach" Miriams Lösung und lass den phpBB spezifischen Teil raus - das ist nämlich nicht sehr viel davon. Im Prinzip also die Funktion advent die sie erstellt hat nehmen und irgendwo sinnvoll bei deinem Projekt einfügen, so dass sie interpretiert wird. Anschließend kannst du mit

Code: Alles auswählen

$advent = advent(time());
switch($advent)
{
case 1:
//Hier kommt der Code für den 1. Advent hin, also z.B. 
echo "<link rel="stylesheet" href="css/fuer/den/ersten/advent.css" type="text/css">";
break;
case 2:
//analog für den 2. Advent
case 3:
//dito
case 4:
//...
break;
default:
//wenn nicht im Advent
}
In der Advent-Funktion kommt noch die Variable $user vor - das musst du noch ersetzen durch die für dich passenden Zahlenwerte - das Objekt wird benutzt um die Zeitzone zu bestimmen. Also musst du $user->timezone durch +1 ersetzen (GMT + 1 für Deutschland) und $user->dst kannst du einfach durch 0 ersetzen, denn um Weihnachten herum ist immer Winterzeit und im Sommer ist es egal wenn der Algorithmus sich um ne Stunde verrechnet, der Advent liegt ja weit genug weg. Bleibt noch die Datumsformatierung mittels $user->format_date($a,$b,true), die kannst du erst mal ersetzen durch date($b,$a) (Achtung verdrehte Reihenfolge der Parameter). Kann sein dass das zu Verschiebungen wegen den Zeitzonen führt, habe ich jetzt nicht kontrolliert.

Ob das nun einfacher als der von Tekin vorgeschlagene Weg ist musst du selbst entscheiden.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: css abhängig von Datum ändern

Beitrag von Miriam »

...und der von mir gepostete Code ist für alle Jahre gültig.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
uwe.ha
Mitglied
Beiträge: 834
Registriert: 18.05.2001 02:00

Re: css abhängig von Datum ändern

Beitrag von uwe.ha »

Mal gucken, ob ich das verstehen und umsetzen kann ... bevor der 4. Advent vorbei ist :D
Vielen Dank erstmal!
Uwe
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: css abhängig von Datum ändern

Beitrag von Miriam »

uwe.ha hat geschrieben:...
Wenn ich ein Tutorial habe, das zu 95% passt, bekomme ich es - vielleicht - angepasst.
Du hast doch summa summarum schon gefühlte 99,99% Vorleistung erhalten.
Wenn Du die Vorschläge von gn mit umsetzt, hast Du es schon fast.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
cYbercOsmOnauT
Ehemaliges Teammitglied
Beiträge: 3820
Registriert: 18.02.2004 23:02
Wohnort: Göttingen
Kontaktdaten:

Re: css abhängig von Datum ändern

Beitrag von cYbercOsmOnauT »

Miriam hat geschrieben:...und der von mir gepostete Code ist für alle Jahre gültig.
Meiner auch.. näää nänä nääää nä :D
• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
Antworten

Zurück zu „Coding & Technik“