De:Menüs aufteilen
From phpCMS
Frage: Wie kann ich meine Menü-Dateien aufteilen?
Antwort: Patch von Samson (30.11.2004)
Wenn die Menüdatei zu groß wird, bekommt man Probleme, wenn in den Contentdateien keine Menünummer definiert ist. phpCMS wird immer langsamer, je größer die Menüdatei ist - bis zum Skript-Timeout. Wer auf Schnickschnack wie eine Sitemap verzichten kann, für den ist dieser Patch interessant. Dabei werden alle Untermenüs auf die jeweiligen Unterverzeichnisse in Dateien mit dem Namen sub.mnu exportiert.
[edit] Patchen von class.parser_menu_phpcms.php
Suche nach der Funktion menu (etwa Zeile 50) und ergänze globals um das Objekt $CHECK_PAGE:
global $DEFAULTS,$CHECK_PAGE;
Füge nach $this->content = new File($DEFAULTS->MENU); in Zeile 56 den folgenden Code ein:
$temppath = $CHECK_PAGE->path;
$temptrenner=1;
while($temptrenner>0) {
if(file_exists($DEFAULTS->DOCUMENT_ROOT.$temppath."/sub.mnu")) {
$this->content1 = new File($DEFAULTS->DOCUMENT_ROOT.$temppath."/sub.mnu");
$this->content->lines = array_merge($this->content->lines,$this->content1->lines);
}
$temptrenner = strrpos($temppath,"/");
$temppath = substr($temppath,0,$temptrenner);
}
[edit] Funktionsweise
Der Parser wird angewiesen, ausgehend vom aktuellen Verzeichnis alle übergeordneten Verzeichnisse nach Dateien mit dem Namen sub.mnu zu durchsuchen. Der Inhalt jeder gefundenen sub.mnu wird dem Menü-Objekt hinzugefügt.
[edit] Beispiel
Die Hauptmenüdatei hat folgenden Inhalt:
MENU: MAIN CLASS;TEXT;LINK;ALT;ZIEL 00.00;Aktuelles;/index.html;Homepage;_top 00.08;Archiv;/events/index.html;Frühere Meisterschaften und Open;_top 00.03;Geschichte;/historie/index.html;Berliner Schachgeschichte;_top 00.01;DWZ/BWZ;/archiv/rating/index.html;DWZ und BWZ;_top 00.04;Forum;/forum/index.html;Schachforum;_top 00.06;Gästebuch;/gaestebuch/index.html;Gästebuch;_top 00.10;Links;/links/index.html;Links;_top 00.11;Download;/download/index.html;Download;_top 00.09;Jugendschach;/jugend/;Jugendschach;_top
Das Archiv-Menü mit der Nummer 00.08 wurde in die Datei sub.mnu im Verzeichnis /events ausgelagert und hat folgenden Inhalt:
MENU: SUB1 CLASS;TEXT;LINK;ALT;ZIEL 00.08.00;Open;/events/open/index.html;Open in und um Berlin;_top 00.08.01;BSV;/events/bsv/index.html;Meisterschaften des BSV;_top 00.08.02;Berlin;/events/berlin/index.html;Berichte aus Berlin;_top 00.08.03;Deutschland;/events/deutschland/index.html;Turniere in Deutschland;_top 00.08.07;Ausland;/events/ausland/index.html;Ausländische Berichte;_top 00.08.06;Spielerwahl;/events/berlin/spielerwahl/index.html;Wahl;_top 00.08.05;Statistik;/events/statistik/index.html;Diverse Statistiken;_top
Der Parser liest dieses Sub-Menü nur ein, wenn vom Browser eine Datei aus /events abgerufen wurde.
Main Page: Tutorials MainPage | Top Page: De:MiniHowTos
This page in other languages: English

