Random Stylechange |
Epona
Mitglied
Dabei seit: 15.01.07
Beiträge: 48
Fähigkeiten: WBB2 Fortgeschritten; WBB Lite 1 Fortgeschritten Herkunft: Paris Forenversion: 2.3; Lite 1.0
|
|
Liebe Wbbler,
die User meines Forums sind mit einem neuen Wunsch aufgekommen: Wir haben viele Styles und viele können sich nicht entscheiden, welchen sie nehmen wollen. Sie wünschen sich deswegen eine Random Style - Funktion. Jedes mal, wenn sie neu online kommen, soll ein neuer Style ausgewählt werden.
Ich weiß nun nur nicht, wie ich das genau umsetzen soll.
Ich habe bereits das UserCP erfolgreich angepasst. Die User können die Funktion an- und abstellen, wenn sie möchten (neue Tabellenspalte stylechange in der Mitglieder Tabelle).
Jetzt müsste ich in der global eben noch einbauen wenn stylechange == 1 dann die random Geschichte machen, aber ich blicke in der global.php noch nicht ganz durch. Die Stelle, die sich um die Stylesache kümmert ist ja folgende:
php: |
1:
2:
3:
4:
5:
6:
7:
8:
|
$style = array();
if (isset($board) && ($board['enforcestyle'] == 1 || ($board['styleid'] != 0 && $wbbuserdata['styleid'] == 0))) {
$style = $db->query_first("SELECT s.styleid, s.templatepackid, s.designpackid, tp.templatestructure FROM bb".$n."_styles s LEFT JOIN bb".$n."_templatepacks tp ON(tp.templatepackid=s.templatepackid) WHERE s.styleid = '".$board['styleid']."'");
$wbbuserdata['designpackid'] = $style['designpackid'];
$wbbuserdata['templatepackid'] = $style['templatepackid'];
$wbbuserdata['styleid'] = $style['styleid'];
$wbbuserdata['templatestructure'] = $style['templatestructure'];
} |
|
Aber das ist ja nur für Gäste, oder? Wo wird denn abgefragt, welchen Style die registrierten User verwenden?
Schon mal vielen lieben Dank für eure Hilfe!
__________________
|
|
25.03.11 18:45 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
Viktor
Mitglied
Dabei seit: 17.01.04
Beiträge: 108
Fähigkeiten: WBB2 Profi; WBB Lite 1 Profi Forenversion: 3.0; 2.3
|
|
Hallo,
wenn musst du das in der Datei "acp/lib/session.php" machen.
Wenn es nur für registrierte User sein soll musst du es unter dem Abschnitt machen.
code: |
1:
2:
3:
4:
5:
6:
|
if (!isset($wbbuserdata)) {
if (isset($wbb_userid) && $wbb_userid != 0) {
/** read $wbbuserdata using the function getwbbuserdata() (@see functions.php) **/
$wbbuserdata = getwbbuserdata($wbb_userid, "userid", 1);
|
|
Da musst du dann per Ramdon die neue Styleid ermitteln und dann den Code da einbauen.
code: |
1:
2:
3:
4:
5:
6:
7:
|
$style = $db->query_first("SELECT s.styleid, s.templatepackid, s.designpackid, tp.templatestructure FROM bb".$n."_styles s LEFT JOIN bb".$n."_templatepacks tp ON(tp.templatepackid=s.templatepackid) WHERE s.styleid = '4'");
$wbbuserdata['designpackid'] = $style['designpackid'];
$wbbuserdata['templatepackid'] = $style['templatepackid'];
$wbbuserdata['styleid'] = $style['styleid'];
$wbbuserdata['templatestructure'] = $style['templatestructure'];
|
|
Da musst du die ermittelte Styleid übergeben und schon klappt es.
Gruß
Viktor
__________________ Mein Supportboard
|
|
25.03.11 23:08 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
Epona
Mitglied
Dabei seit: 15.01.07
Beiträge: 48
Fähigkeiten: WBB2 Fortgeschritten; WBB Lite 1 Fortgeschritten Herkunft: Paris Forenversion: 2.3; Lite 1.0
Themenstarter
|
|
Hallo Viktor! Vielen lieben Dank für deine Antwort
Habe folgendes eingefügt:
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
|
if ($wbbuserdata['randomstyle'] == 1) {
$style = $db->query_first("SELECT s.styleid, s.templatepackid, s.designpackid, tp.templatestructure FROM bb".$n."_styles s LEFT JOIN bb".$n."_templatepacks tp ON(tp.templatepackid=s.templatepackid) WHERE s.hidestyle='0' ORDER BY RAND() LIMIT 1");
$wbbuserdata['designpackid'] = $style['designpackid'];
$wbbuserdata['templatepackid'] = $style['templatepackid'];
$wbbuserdata['styleid'] = $style['styleid'];
$wbbuserdata['templatestructure'] = $style['templatestructure'];
} |
|
Nun habe ich aber das Problem, dass bei jedem Seitenaufruf ein neuer Style gewählt wird. Was muss ich tun, damit dies nur noch nach dem Ablauf einer Session passiert?
Also wenn ich online komme, dann wird ein neuer Style ausgesucht. Aber sobald ich dann etwas länger nicht mehr aktiv war und später wieder zurück komme, dann erst wird wieder ein neuer Style ausgesucht?
Ich dachte, dass ich den PHP Code vielleicht an eine andere Stelle in der Session.php packen muss, um das zu erreichen, aber ich seh nicht ganz durch :/
Danke schonmal für jeden weiteren Denkanstoß
__________________
|
|
27.03.11 18:43 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
Epona
Mitglied
Dabei seit: 15.01.07
Beiträge: 48
Fähigkeiten: WBB2 Fortgeschritten; WBB Lite 1 Fortgeschritten Herkunft: Paris Forenversion: 2.3; Lite 1.0
Themenstarter
|
|
Hat hier wirklich Niemand eine Idee, wie ich das umsetzen könnte
__________________
|
|
29.08.11 14:57 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
Schrimm
Banned
Dabei seit: 21.08.11
Beiträge: 700
|
|
Zitat: |
Original von minette
mach es doch einfach
session:user => abfrag
ist zu gross db bearbeitung
mach es dann für alle aber mit timestamp
3 oder 4 stil wie die uhr lauf
ist viel besser für dein db |
Und warum soll das besser sein?
|
|
31.08.11 00:00 |
Finden
Als Freund hinzufügen
|
|
Epona
Mitglied
Dabei seit: 15.01.07
Beiträge: 48
Fähigkeiten: WBB2 Fortgeschritten; WBB Lite 1 Fortgeschritten Herkunft: Paris Forenversion: 2.3; Lite 1.0
Themenstarter
|
|
if ($wbbuserdata['lastactivity'] < time() - $sessiontimeout) {
if ($offline != 1 || $wbbuserdata['can_view_off_board'] != 0) {
$db->unbuffered_query("UPDATE bb".$n."_users SET lastvisit=lastactivity, lastactivity = '".time()."', langid='$wbbuserdata[langid]'".$pmpopup_reset." WHERE userid = '$wbbuserdata[userid]'", 1);
$wbbuserdata['lastvisit'] = $wbbuserdata['lastactivity'];
$wbbuserdata['lastactivity'] = time();
}
checkPosts4AI();
sessionupdate();
}
else {
$db->unbuffered_query("UPDATE bb".$n."_users SET lastactivity = '".time()."', langid='$wbbuserdata[langid]'".$pmpopup_reset." WHERE userid = '$wbbuserdata[userid]'", 1);
$wbbuserdata['lastactivity'] = time();
}
Die Stelle ist mir noch nie aufgefallen. Wäre es nich logischer den Stylechange dort einzubauen? Also wenn stylechange aktiviert ist dann ändere per random den Style während der das auch mit der lastactivity macht? .-.
__________________
|
|
01.09.11 18:08 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
Ghostmaster
Das Böse
Dabei seit: 17.01.04
Beiträge: 6.440
Fähigkeiten: WBB2 Profi Forenversion: 2.3
|
|
Probier mal folgendes.
Öffne acp/lib/session.php suche:
code: |
1:
2:
|
if (isset($styleid)) $session['styleid'] = $styleid;
else $session['styleid'] = $wbbuserdata['styleid']; |
|
ersetzen mit:
code: |
1:
2:
|
$randstyles = $db->query_first("SELECT * FROM bb".$n."_styles ORDER BY RAND() LIMIT 1");
$styleid = $randstyles['styleid']; |
|
Öffne login.php suche:
code: |
1:
|
$db->unbuffered_query("DELETE FROM bb".$n."_sessions WHERE userid = '$result[userid]'", 1); |
|
füge DANACH:
code: |
1:
2:
3:
|
$randstyles = $db->query_first("SELECT * FROM bb".$n."_styles ORDER BY RAND() LIMIT 1");
$randstyleid = $randstyles['styleid'];
|
|
Suche weiter nach:
code: |
1:
|
, styleid='".$result['styleid']."' WHERE sessionhash = '$sid'", 1); |
|
ersetze mit:
code: |
1:
|
styleid='$randstyleid' WHERE sessionhash = '$sid'", 1); |
|
|
|
01.09.11 19:05 |
Finden
Als Freund hinzufügen
|
|
Ghostmaster
Das Böse
Dabei seit: 17.01.04
Beiträge: 6.440
Fähigkeiten: WBB2 Profi Forenversion: 2.3
|
|
Der Style wird nur RANDOM genommen.
Wenn eine Session auf 0 ist, wird eine neue erstellt - somit auch eine neue styleID angefordert.
|
|
01.09.11 23:53 |
Finden
Als Freund hinzufügen
|
|
|