Geschrieben von Listiger_Falke am 26.02.2011 um 00:07:
WIW-Anzeige "Sonstiges" durch LCD und dessen Lösung beim Einbau des LCD Global
Erst mal: Kein Hack, nur eine Anleitung!
Ich habe, wie viele Andere, das LCD Global verbaut. In der WIW-Anzeige werden dadurch die User immer als "Sonstiges" angezeigt, weil natürlich das LCD bzw. die lcd.php in einem Iframe nachgeladen wird.
Das soll heißen... klickt ein User auf z.B. die Usershow.php, so lädt sich diese Seite. während des ladens aber lädt er die lcd.php nach. Der Zeitablauf ist also Usershow.php, dann ----> lcd.php.
Die lcd.php kann aber in der class_wiw.php ja nicht bestimmt werden, denn sie ist ja global verbaut.
Ich habe mich diesen Problems einmal angenommen, und eine vernünftige, aber nicht allzu leichte Lösung gefunden, die die Probleme aber löst.
1. Man schafft sich weitere lcd.php´s, und zwar für jede Seite, in der man das LCD später auch sehen will. Dabei kann man sich zugleich Gedanken machen, ob das Display wirklich auf jede Seite MUSS! (Ladezeit) Diese lcd.php´s schafft man sich durch kopieren der lcd.php und dann wieder einfügen ----> umbenannt nach der Seite, wo ich das Display sehen will, also z.B. lcdportal.php
2. Ich lagere das Display aus der header.tpl aus. Ich baue den Code einfach in eine neue tpl, und benenne diese lcd1.tpl. Ich kopiere auch diese tpl und füge sie wieder ein, benannt nach der Seite, wo ich sie benötige, im Portal als Beispiel dann lcdportal.tpl
3. Ich definiere die Aufrufe für die einzelnen tpl in der global.php. (Root)
Dazu suche ich den Code
code: |
1:
|
eval("\$header = "".$tpl->get("header")."";"); |
|
und füge darunter die Codes meiner TPL nach dem Schema
code: |
1:
|
eval("\$headerlcdportal = "".$tpl->get("lcdportal")."";"); |
|
4. Schritt. Nun füge ich den Code für das neue Template in die TPL, wo er erscheinen soll, also als Beispiel für das Portal suche ich in der sponsor_portal.tpl den Code $header und füge darunter $headerlcdportal
5. Ich ändere den Aufruf in den Templates, als Beispiel hier wieder das Portal: Ich öffne meine lcdportal.tpl und ändere den Aufruf meines Iframes von lcd.php in lcdportal.php. Dadurch wird für jede Seite eine andere PHP aufgerufen
6. Nun muß ich die neuen php´s noch in der class_wiw einbauen. Ich füge für jede der lcd.php´nun einen eigenen Aufruf ein
case "lcdportal.php":
$location = "Portal";
break;
Wenn ich nun alle php´s hochgeladen, und alle neuen Templates gecacht habe, habe ich ab sofort durch das LCD-Display nie wieder ein "Sonstiges" in der WIW zu stehen.
Zugegeben, eine etwas umständliche Arbeit, aber bisher das einzige, was bei mir wirklich geholfen hat
Noch ein Nachtrag: Für diejenigen, die noch wissen wollen, wie man das LCD global einbaut:
Der Code
code: |
1:
2:
|
$lcdsetting = $db->query_first("SELECT lcdon FROM bb".$n."_lcd_options");
$lcdon = intval($lcdsetting['lcdon']); |
|
wird einfach aus der index.php gelöscht, und statt dessen in die global.php (Root, Hauptverzeichniss, NICHT ACP!) unter
code: |
1:
2:
|
x/** load smtp_socket function **/
require('./acp/lib/class_smtp.php'); |
|
kopiert..... speichern und hochladen