Seite 1 von 2
Automatisch wechselnde Styles
Verfasst: 09.07.2009 10:23
von Ruhrpottler
Hallo Leute,
ich betreibe ein Stadtforum meiner Heimatstadt. Als Banner fungiert eine Art "Skyline" dieser Stadt mit einem Schriftzug.
Jetzt hatte ich mir überlegt, dass es doch cool wäre tagsüber einen hellen Style mit der Skyline bei Tag zu verwenden und in den Abendstunden einen dunklen Style mit Skyline bei Nacht.
2 verschiedene Styles, inkl. Banner herzustellen ist ja nicht das Problem, aber gibt es so einen Mod der automatisch (zeitgesteuert) den Standardstyle ändert? Man könnte das natürlich immer von Hand umstellen, aber seien wir ehrlich ... das würd auf Dauer eh nicht funktionieren

Re: Automatisch wechselnde Styles
Verfasst: 09.07.2009 14:56
von Mahony
Hallo
Du könntes in eine Datei, die immer geladen wird (zum Beispiel in die index.php), folgendes schreiben
Code: Alles auswählen
if (date("H")>6 && date("H")<18){
$sql = 'UPDATE ' . USERS_TABLE . '
SET user_style = 2';
$db->sql_query($sql);
$sql = 'UPDATE ' . CONFIG_TABLE . '
SET config_value = 2
WHERE config_name = "default_style"';
$db->sql_query($sql);
$sql = 'UPDATE ' . CONFIG_TABLE . '
SET config_value = 1
WHERE config_name = "override_user_style"';
$db->sql_query($sql);
} else {
$sql = 'UPDATE ' . USERS_TABLE . '
SET user_style = 1';
$db->sql_query($sql);
$sql = 'UPDATE ' . CONFIG_TABLE . '
SET `config_value` = 1
WHERE config_name = "default_style"';
$db->sql_query($sql);
$sql = 'UPDATE ' . CONFIG_TABLE . '
SET config_value = 1
WHERE config_name = "override_user_style"';
$db->sql_query($sql);
}
In dem Beispiel hast du von 6 bis 18Uhr den Style 2 und von 18 bis 6Uhr den Style 1
Hier noch einmal die Beschreibung/Bedeutung der einzelnen SQL-Befehle
Mahony hat geschrieben:
Schau in der Tabelle phpbb_styles_theme nach, welche ID dein Style hat und verwende folgende Mysql - Befehle zum umstellen des Styles für alle User auf den Standard-Style
Style für alle User umstellen
x entspricht der theme_id deines Standard-Styles.
Den default_style einstellen.
Code: Alles auswählen
UPDATE `phpbb_config`
SET `config_value` = x
WHERE `config_name` = 'default_style';
x entspricht der theme_id deines Standard-Styles.
Code: Alles auswählen
UPDATE `phpbb_config`
SET `config_value` = 1
WHERE `config_name` = 'override_user_style';
1 bedeutet hier - überschreibe die Einstellungen der User mit dem Wert der in default_style festgelegt wurde (aktiviert also das Überschreiben der Einstellungen deiner User - entspricht also der Einstellung im ACP
Benutzer-Style überschreiben: Ja).
Edit: Es war noch ein Fehler im letzten SQL-Befehl. Der Fehler wurde beseitigt und das Snippet sollte jetzt funktionieren.
Übrigens sollte man den Code in die common.php einfügen und zwar vor ?>
Grüße: Mahony
Re: Automatisch wechselnde Styles
Verfasst: 09.07.2009 15:50
von Ruhrpottler
Das klingt doch schonmal super! Und WO ich das in der Datei einfüge ist egal?
Werde ich direkt mal testen!! Vielen Dank!!!
P.S.: Hatte demnächst vor noch n Portal einzubauen. Müsste ich das selbe auch in die Portal.php (falls es die gibt) eintragen oder geht das trotzdem?
Re: Automatisch wechselnde Styles
Verfasst: 09.07.2009 16:00
von Mahony
Hallo
Ruhrpottler hat geschrieben:Das klingt doch schonmal super! Und WO ich das in der Datei einfüge ist egal?
Werde ich direkt mal testen!! Vielen Dank!!!
Am besten fügst du den code in der index.php vor
ein.
Ruhrpottler hat geschrieben:P.S.: Hatte demnächst vor noch n Portal einzubauen. Müsste ich das selbe auch in die Portal.php (falls es die gibt) eintragen oder geht das trotzdem?
Es reicht den code in eine Datei einzufügen, die möglichst immer geladen wird. Sobald der erste User die Seite aufruft, in der der Code enthalten ist, wird der Style umgestellt.
Edit: Wie ich bereits oben im Edit geschrieben habe, sollte man den Code in die common.php einfügen und zwar vor ?>
Daduch wird immer Zeitabhängig geprüft, ob Style x oder Style y geladen werden soll. Der Code muss nur einmalig in der common.php eingefügt werden (egal ob noch ein Portal dazu kommt oder nicht).
Grüße: Mahony
Re: Automatisch wechselnde Styles
Verfasst: 11.07.2009 00:23
von 4seven
und mal wieder ein geniales snippet..
big thx

Re: Automatisch wechselnde Styles
Verfasst: 21.07.2009 10:03
von Ruhrpottler
So, bin jetzt mit nem neuen Forum online gegangen und hab auch dieses Snippet eingebaut.
Fazit: Funktioniert NUR wenn ich im ACP unter Serverlast die Funktion "Rekompilieren veralteter Style Komponenten" aktiviere. Hatte das zwecks Styles-testen eh seit ein paar Tagen an, aber wegen der Serverlast hab ich es wieder ausgeschaltet als wir heute nacht mit dem neuen Forum online gegangen sind. Um 7 Uhr hätte er den Style wechseln sollen. Tat er nicht. Als ich die o.g. Funktion wieder aktiviert hab, war sofort der neue Style da.
Frage: Ist die Serverlast mit der Funktion zu hoch bei ~200 Usern?
Oder gibts noch ne andere Möglichkeit?
Re: Automatisch wechselnde Styles
Verfasst: 21.07.2009 11:04
von Mahony
Hallo
Das Snippet sollte auch ohne aktiviertes
Rekompilieren veralteter Style Komponenten funktionieren. Zumindest hat es das bei meinem Test.
Übrigens sollte man den Code in die common.php einfügen und zwar vor ?>
Grüße: Mahony
Re: Automatisch wechselnde Styles
Verfasst: 21.07.2009 11:23
von Ruhrpottler
Komisch. Bei mir gings nicht!
Werd dann heut Abend nochmal testen wenn der Style wieder zurückwechselt. In die Common.php hab ichs übrigens auch eingefügt.
Re: Automatisch wechselnde Styles
Verfasst: 21.07.2009 19:22
von DerPate
Abend,
hier noch ne etwas kürzere Variante ... ebenfalls am Ende der common.php vorm ?> einzufügen:
Code: Alles auswählen
$style_day = 2;
$style_night = 1;
if ((date('H') >= 6 && date('H') <= 18) && $config['default_style'] != $style_day)
{
set_config('default_style', $style_day);
}
elseif ((date('H') < 6 || date('H') > 18) && $config['default_style'] != $style_night)
{
set_config('default_style', $style_night);
}
Anm: "Benutzer-Style überschreiben" muss aktiviert sein.
Ciao
Re: Automatisch wechselnde Styles
Verfasst: 22.07.2009 09:34
von Ruhrpottler
Habs jetzt nochmal getestet. Es halt doch nichts zu tun mit dem "Rekompilieren veralteter ....", sondern mit dem Cache. Grad wieder festgestellt, dass er den Style heute morgen um 7 nicht gewechselt hat, dann den Cache geleert und schon war der neue Style da.
