Seite 1 von 4
css abhängig von Datum ändern
Verfasst: 03.12.2013 12:07
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!
Re: css abhängig von Datum ändern
Verfasst: 03.12.2013 16:12
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.
Re: css abhängig von Datum ändern
Verfasst: 03.12.2013 16:59
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
Re: css abhängig von Datum ändern
Verfasst: 03.12.2013 17:09
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!
Re: css abhängig von Datum ändern
Verfasst: 03.12.2013 17:31
von cYbercOsmOnauT
tricky weil ich es nur aus dem Kopf aufgeschrieben habe. Man müsste es austesten.
Re: css abhängig von Datum ändern
Verfasst: 03.12.2013 17:36
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.
Re: css abhängig von Datum ändern
Verfasst: 03.12.2013 18:18
von Miriam
...und der von mir gepostete Code ist für alle Jahre gültig.
Re: css abhängig von Datum ändern
Verfasst: 03.12.2013 18:31
von uwe.ha
Mal gucken, ob ich das verstehen und umsetzen kann ... bevor der 4. Advent vorbei ist

Vielen Dank erstmal!
Re: css abhängig von Datum ändern
Verfasst: 03.12.2013 18:39
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.
Re: css abhängig von Datum ändern
Verfasst: 04.12.2013 22:23
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ä
