HMENU

Erzeugt hierachische Menüs.

Eigenschaft

Datentyp

Beschreibung

Standard

1,2,3,...

menuObj

Erforderlich!
Definiert, welches menuObj die Menüzeilen der einzelnen Levels rendern soll.
1 entspricht der ersten Ebene, 2 der zweiten Ebene, 3 der dritten Ebene, 4 der vierten Ebene...

Beispiel:
temp.sidemenu = HMENU
temp.sidemenu.1 = GMENU

 

entryLevel

int

Gibt an, in welcher Ebene der rootline das Menü beginnen soll. Der Standardwert ist "0", was uns zu einem Menü mit den ersten Seiten der Website führt. Ist der Wert < 0, liegt entryLevel "hinter" der rootline. "-1" ist also ein Menü mit Einträgen aus der obersten Ebene, "-2" ist die Ebene nach dem obersten Ebene,...

 

special

"directory" / "list" / "updated" / "browse" / "rootline" / "keywords" / "language"

(Siehe gesonderte Tabelle unten)

 

special.value

Liste von Seiten-UIDs / stdWrap

(Siehe oben)

 

minItems

int

Die Mindestzahl von Menüeinträgen. Wenn die Anzahl an Einträgen diese Zahl nicht erreicht, wird eine Dummy-Zeile mit dem Titel "..." und der UID=[ID der aktuellen Seite] eingefügt.

Anmerkung: Dies beeinflusst auch alle Untermenüs. Um diesen Wert für jedes Menü individuell einzustellen, setzen Sie die Eigenschaften in den Menü-Objekten (Siehe auch Tabelle Allgemeine Eigenschaften).

 

maxItems

int

Die Höchstzahl von Menüelementen. Mehr Elemente werden ignoriert.

Anmerkung: Beeinflusst auch alle Untermenüs (siehe minItems)

 

begin

int + calc

Das erste Element im Menü.

Beispiel:
Dies erzeugt ein Menü, in dem die ersten beiden Einträge übersprungen werden, und das mit dem dritten Eintrag anfängt:
begin = 3

Anmerkung: Beeinflusst auch alle Untermenüs (siehe minItems)

 

excludeUidList

Liste von int

Eine Liste von Seiten-UIDs, die aus dem Menü ausgeschlossen werden sollen. Durch Kommata abgetrennt.

Beispiel:
Die Seiten mit diesen UIDs werden NICHT im Menü erscheinen!
32,2

 

alwaysActivePIDlist

Liste von int

Eine Liste von Seiten-UIDs, die immer als aktive Menüeinträge betrachtet und daher automatisch geöffnet werden, ungeachtet der Rootline.

 

protectLVar

boolean / keyword

Falls gesetzt, wird für jede Seite im Menü geprüft, ob die GET-Variable &L einen anderen Wert hat als die mometane sys_language_uid und ob ein alternativer Sprachdatensatz für diese sys_language_uid für die Seite existiert. Ist das nicht der Fall und die “Übersetzungseinstellungen” der Seite stehen auf “Verstecke Seite, wenn keine Übersetzung für aktuelle Sprache existiert”, wird der Menüeintrag auf eine nicht zugreifbare Seite zeigen, die dem Benutzer eine Fehlermeldung weitergibt. Das Setzen dieser Option verhindert diese Situation, indem einfach &L=0 für solche Seiten angehängt wird, was bedeutet, dass zur Standardsprache gewechselt wird, anstatt die momentane Sprache beizubehalten.

Schlüsselwort: all
Wenn all gesetzt ist, wird derselbe Test durchgeführt, allerdings wird nicht überprüft, ob “Verstecke Seite, wenn keine Übersetzung für aktuelle Sprache existiert” eingestellt ist – es wird immer auf die Standardsprache umgestellt, wenn keine Übersetzung gefunden wird.

Damit diese Optionen Sinn machen, sollten sie nur genutzt werden, wenn config.sys_language_mode nicht auf content_fallback gesetzt ist.

 

if

»if

Falls "if" "falsch" zurückliefert, wird das Menü nicht erzeugt.

 

 wrap

wrap

 

 

 stdWrap

»stdWrap

Die .special-Eigenschaft

Diese Eigenschaft ermöglicht es, Menüs zu erzeugen, die nicht grundsätzlich die aktuelle Seitenstruktur wiedergeben,sondern stattdessen Links enthalten wie “Vor/Zurück”, “Zuletztbearbeitet”, “Seiten in einer bestimmten Seite” und so weiter.

ANMERKUNG: Setzen Sie nicht die Eigenschaft .entryLevel für ein HMENU, wenn Sie diese Option benutzen! Beachten Sie auch, dass hier Seiten für die oberste Menüebene gewählt werden. Untermenüs mit menuObjects 2+ werden wie üblich erzeugt.

Typ

Beschreibung

directory

Dies erzeugt ein Menü mit allen Seiten mit der pid 35 und 56.
20 = HMENU
20.special = directory
20.special.value = 35, 56
Falle .value nicht gesetzt ist, wird die UID der aktuellen Seite verwendet.
Support for Mount Pages: Yes.

list

Dies erzeugt ein Menü mit den beiden aufgezählten Seiten (uid=35 und uid=36):
20 = HMENU
20.special = list
20.special.value = 35, 56
Falls .value nicht gesetzt ist, ist die Standard-UID die .entryLevel-UID.
Support for Mount Pages: Yes.

updated

Dies erzeugt ein Menü der zuletzt bearbeiteten Seiten aus den Zweigen des Baums, die mit den aufgezählten UIDs (35 und 36) beginnen. Des weiteren wird das Feld “tstamp” benutzt (Standardwert SYS_LASTCHANGED), und die Baumtiefe beträgt 2 Levels. Außerdem wird eine Höchstzahl von 8 Seiten angezeigt, und diese müssen innerhalb der letzten drei Tage(3600*24*3) bearbeitet worden sein.
20 = HMENU
20.special = updated
20.special.value = 35, 56
20.special {
mode = tstamp
depth = 2
maxAge = 3600*24*3
limit = 8
}


Sortiert wird standardmäßig in umgekehrter Reihenfolge (absteigend, “desc”), nach dem Feld, welches in “mode” angegeben wird, aber durch Setzen von “alternativeSortingField” für das Menü-Objekt (z.B. »GMENU, siehe später) wird dies überschreiben. Die Eigenschaften mode, depth, maxAge und limit werden nur mit special=updated benutzt.
mode: Gibt an, welches Feld in der Seiten-Tabelle zu benutzen ist. Standardmäßig wird “SYS_LASTCHANGED” benutzt (welches auf den jüngsten tstamp der Einträge der Seite gesetzt wird, wenn diese erzeugt wird), “manual” oder“lastUpdated” benutzen das Feld “lastUpdated” (wird manuell im Seiten-Eintrag gesetzt) und “tstamp” benutzt das “tstamp”-Feld des Seiteneintrags, welches automatisch gesetzt wird, wenn der Eintraggeändert wird. “crdate” benutzt das “crdata”-Feld der Seite,“starttime” benutzt das “starttime”-Feld. Felder mit einem Wert von null weren überhaupt nicht ausgewählt.
depth: Die Tiefe ist standardmäßig (wenn der Wert kein Integer ist) 20 Levels. Die Reichweite geht von 1-20. Eine Tiefe von 1 bedeutet lediglich die Start-ID, eine Tiefe von 2 bedeuted die Start-ID + dem erstenLevel. ANMERKUNG: depth verhält sich relativ zu beginAtLevel.
beginAtLevel: Integer. Bestimmt den Startlevel für die erzeugten Seitenbäume basierend auf .value und .depth. 0 ist Standard und bezieht die Start-ID ein. 1: startet mit der ersten Reihe an Unterseiten, 2: startet mit der zweiten Reihe an Unterseiten. Depth verhält sich relativ zu diesem Startpunkt.
maxAge: Sekunden+calc. Seiten mit Aktualisierungszeitpunkten älter als die momentane Zeit minus diese Anzahl an Sekunden werden unter keinen Umständen im Menü angezeigt. Wird standardmäßig nicht benutzt. Sie können +-*/ für Rechenoperationen benutzen.
excludeNoSearchPages: Boolean. Falls gesetzt, werden Seiten, die mit “nicht suchen” markiert sind, nicht in das Menü eingebunden.
Support for Mount Pages: Yes.

rootline

Erzeugt ein Menü mit den Seiten der rootline.
.range = [Anfangs-Level] | [End-Level] (Genauso, wie Sie .entryLevel für das HMENU referenzieren)
.target[0-x] Ziele.

Das hier...

page.2 = HMENU
page.2.special = rootline
page.2.special.range = 1|-2
page.2.special.targets.3 = page
page.2.1 = TMENU
page.2.1.target = _top
page.2.1.wrap = <hr> | <hr>
page.2.1.NO {
linkWrap = | >
}
... erzeugt ein Menü wie dieses hier:
Seitenebene 1 > Seitenebene 2 > Seitenebene 3 > Seitenebene 4 >
(Das Menü beginnt auf Ebene 1 und verweist NICHT auf die aktuelle Seite (-2 ist die vorige Ebene). Außerdem haben alle Seiten auf Ebene 3 “page”als Ziel und alle anderen “_top”)

browse

Diese Art Menü wird aus den Einträgen erzeugt, die aus einer Liste in der Eigenschaft “.item” erzeugt werden. Jedes Element der Liste (getrennt durch “|”) ist entweder ein reservierter Eintragsname (siehe Liste) mit einer vordefinierten Funktion oder ein benutzerdefinierter Name, welchem Sie eine Verküpfung zu jeder beliebigen Seite zuweisen können. Beachten Sie, dass die aktuelle Seite nicht die Root-Seite einer Website sein kann.

Support for Mount Pages: No!

.items ( “|”-getrennte Liste von Eintragsnamen )
.[Eintragsname].target (target) – optionales/alternatives Ziel des Eintrags
.[Eintragsname].uid (Seiten-UID) – optionale/alternative Seiten-UID, auf die verlinkt wird.
.[Eintragsname].fields.[Feldname] (string) – überschreibt das Feld “Feldname” im Seiteneintrag
.prevnextToSection (boolean) – falls gesetzt, springt die “vor” und “zurück”-Navigation zur nächsten Sektion, wenn das Ende der Seiten der aktuellen Sektionerreicht ist.
.value(Seiten-UID)– Standard ist die aktelle Seiten-ID. Manchmal werden Sie diesen Wert mit einer anderen Seiten-UID überschreiben wollen, die dann als Ausgangspunkt für das Menü und die vordefinierten Einträge dient.

Sortiert wird standardmäßig in umgekehrter Reihenfolge (Absteigend, “desc”) nach demFeld, welches in “mode” angegeben ist, aber das Setzen von“alternativeSortingField” für das Menü-Objekt (z.B. »GMENU, siehe später) wird das überschreiben.
Reservierte Eintragsnamen:
next / prev:Verweist zur nächsten/vorigen Seite. Nächste und vorige Seiten haben die gleiche “pid” wie die aktuelle Seite (oder “value”) - also der nächsteEintrag in einem Menü der aktuellen Seite, oder auch in der aktuellenEbene.
Falls “.prefnextToSection” gesetzt ist, wird next/prev auch zur ersten Seite der nächsten Sektion/letzten Seite der vorigen Sektionverlinken.
nextsection/prevsection:Verweist zur nächsten/vorigen Sektion. Als eine Sektion gelten die Unterseiten einer Seite, die auf der gleichen Ebene wie die übergeordnete Seite der aktuellen Seite liegen. Wird nichtfunktionieren, wenn die übergeordnete Seite der aktuellen Seite dieRoot-Seite ist.
first/last:Erste/letzte Seite auf dem aktuellen Level. Wenn es auf demaktuellenLevel nur eine Seite gibt, ist diese sowohl erste als auchletzte Seite. Wird nicht funktionieren, wenn die übergeordnete Seiteder aktuellen Seite die Root-Seite ist.
up: Link zurübergeordneten Seite (pid) der aktuellen Seite (ein Level hoch). Ist immer verfügbar.
index:Link zur übergeordneten Seite der übergeordneten Seite der aktuellen Seite (zwei Levels hoch). Ist möglicherweise nicht verfügbar, wenn diese Seite außerhalb der Rootline liegt.

keywords

Erzeugt ein Menü mit Seiten, die ein oder mehrere Schlüsselwörter enthalten, die auch auf der aktuellen Seite zu finden sind.
.value = Seite, nach deren Schlüsselwörtern andere Seiten durchsucht werden sollen.

.mode: Gibt an, welches Feld der Seitentabelle zur Sortierung zu benutzen ist. Vorgabewert ist “SYS_LASTCHANGED” (wird auf den jüngsten tstamp der Seiteneinträge gesetzt, wenn die Seite generiert wird), “manual” oder “lastUpdated” greifen auf das Feld “lastUpdated” zu (manuell im Seiteneintrag setzen) und “tstamp” benutzt das “tstamp”-Feld des Seiteneintrags, welches automatisch gesetzt wird, wenn der Eintrag bearbeitet wird. “crdate” benutzt das “crdate”-Feld des Eintrags, “starttime” das “starttime”-Feld.

.entryLevel: Gibt an, wo in der Rootline die Suche beginnt. Standard Rootline Syntax (-x bis x)

.depth, .limit, .excludeNoSearchPages, .beginAtLevel (wie im “updated”-Menü)

.setKeyword (+stdWrap): Lässt Sie die Schlüsselwürter manuell als durch Kommata getrennte Liste angeben. Wenn diese Eigenschaft gesetzt ist, wird die Vorgabe, dir Schlüsselwörter der aktuellen Seite, überschrieben.

.keywordsField: Gibt das Feld in der Seitentabelle an, in dem nach den Schlüsselwörtern gesucht werden soll. Vorgabewert ist der Feldname “keyword”. Es wird nicht kontrolliert, ob das Feld, welches Sie hier angeben, wirklch existiert, also geben Sie ein existierendes Feld an, verstanden!?

.keywordsField.sourceField: Gibt das Feld der aktuellen Seite an, aus dem die Schlüsselwörter genommen werden soll. Vorgabewert ist "keyword". (Beachten Sie, dass “.keywordsField” nur das Eintragsfeld angibt, in dem gesucht werden soll!)

 language

Erzeugt ein Sprachauswahlmenü. In der Regel besteht solch ein Menü aus Fahnen für jede Sprache, in die eine Seite übersetzt wird, und wenn der Benutzer eines der Menüelemente anklickt, wird auf dieselbe Seiten-ID verwiesen, aber mit einer Änderung des “&L”-Parameters.

Der “language”-Typ erzeugt Menüelemente basierend auf dem aktuellen Seiteneintrag, aber mit jeweils unterschiedlichem Sprachdatensatz (falls verfügbar). Die Elemente verweisen alle auf die aktuelle Seite, lediglich der “&L”-Parameter wird geändert.

Elementzustände:
Wenn “TSFE->sys_language_uid” mit der sys_language-UID für ein Element übereinstimmt, wird der Status auf “ACT” gesetzt, andernfalls auf “NO”. Falls jedoch eine Seite nicht verfügbar ist aufgrund der Übersetzungseinstellungen der Seite (welche Übersetzungen deaktivieren können) oder falls kein alternativer Sprachdatensatz gefunden wurde (das kann allerdings mit “.normalWhenNoLanguage” ausgeschaltet werden, siehe unten), wird der Status auf “USERDEF1” für inaktive Elemente und “USERDEF2” für aktive Elemente gesetzt. Also gibt es alles in allem 4 Stadien, für die ein Design entworfen werden muss. Es wird empfohlen, in diesem Fall den Verweis bei mit “USERDEF1” oder “USERDEF2” erzeugten Elementen auszuschalten, da diese sowieso deaktiviert werden da die Seite in dieser Sprache nicht existiert und sogar eine Fehlermeldung auslösen könnte, wenn darauf zugegriffen wird (abhängig von der Seitenkonfiguration).

.value: durch Kommata getrennte Liste von sys_language-uids, aus denen das Menü erzeugt werden soll. Die Enzahl der Elemente in der Liste bestimmt die Anzahl der Menüelemente.
.normalWhenNoLanguage: boolean, welches, falls gesetzt, den Button für eine Sprache als nicht-deaktiviert erzeugt, auch wenn keine Übersetzung gefunden wurde.

userdefined

Lässt Sie Ihr eigenes kleines PHP-Script schreiben, welches den Array der Menüelemente generiert.
.file [resource] = Dateiname der einzubindenen PHP-Datei (Genau wie das cObject PHP_SCRIPT)
.[irgendein anderer Schlüssel] = Ihre eigenen Variablen in Ihrem Script. Sie sind in Ihrem Script im Array $conf erreichbar.

Anleitung:
Sie müssen einen Array namens $menuItemsArray mit Seiten-Einträgen der Menüelemente, die im Menü erscheinen sollen, füllen.
Das geht ungefähr so:

$menuItemsArray[] = pageRow1;
$menuItemsArray[] = pageRow2;
$menuItemsArray[] = pageRow3;
...

Eine “pageRow” ist ein Eintrag der Tabelle “pages” mit allen Feldern (SELECT * FROM...).
Falls Sie “pagesRow”s selbst erzeugen, müssen Sie darauf achten, zumindest die Werte für die Felder “title” und “uid” einzutragen.

Anmerkung:
Wenn Sie mit Mount-Points arbeiten, können Sie dem MP-Parameter, welcher für die Seite gesetzt sein sollte, einen Wert zuweisen, indem Sie das interne Feld “_MP_PARAM” im Seiten-Eintrag (xxx-xxx) setzen.

URLs überschreiben:
Sie können auch das interne Feld “_OVERRIDE_HREF” benutzen, um einen benutzerdefinierten href-Wert zu verwenden (z.B. “http://www.typo3.org”), der in jedem Fall verwendet wird, und nicht auf die Seite verweist, auf die eigentlich verweist werden sollte.

Andere reservierte Schlüssel:
“_ADD_GETVARS” kann benutzt werden, um der URL GET-Parameter hinzuzufügen, z.B. “&L=xxx”.
“_SAFE” kann benutzt zum Schützen des Elements verwendet werden, um sicherzugehen, dass es nicht aus irgendeinem Grund herausgefiltert wird.

Untermenüs erzeugen:
Sie können Untermenüs für die nächste Ebene einfach erzeugen, indem Sie einen Array von Menüelementen im internen Feld “_SUB_MENU” hinzufügen.

Elementstatus vorbestimmen
Falls Sie vorbestimmen möchten, ob ein Element als SPC, IFSUB, ACT, CUR oder USR erkannt wird, können Sie dies erreichen, indem Sie einen dieser Werte unter dem Schlüssel “ITEM_STATE” im Seiteneintrag angeben. Das wird die natürliche Status-Ermittlung überschreiben.

userfunction

Ruft eine benutzerdefinierte Methode in einer Klasse auf, die (genau wie bei “userdefined” oben) einen Array mit Seiteneinträgen für das Menü zurückliefern sollte.
.userFunc = function-name