Zum Inhalt springen

1 = TMENU, 2 = TMENU.... einfacher?

Erstellt am 21. Dezember 2004 · 13 Antworten · letzte Antwort am 22. Dezember 2004

Tags: Frage

neko1512 ·

Hallo,

ich habe einen etwas komplizierten Quelltext um einen menüpunkt darzustellen (ich schätze mal etwa 30 Zeilen Code). Ich möchte jetzt alle meine Menüpunkte so darstellen (mind. 4 oder 5 Ebenen). Eine Lösung wäre natürlich, diese 30 Zeilen 5mal zu kopieren, aber das muß doch auch einfacher gehen, oder?
Ich meine mich ganz dunkel erinnern zu können, daß ich mal etwas gelesen habe von wegen

1, 2, 3 = TMENU

aber das finde ich jetzt natürlich nicht mehr, und nach 1,2,3 oder Aufzählung zu suchen hat mich nicht wirklich weiter gebracht. Wie hieß das denn richtig?
Was noch ganz große Klasse wäre, wenn in jeder Menüebene ein anderes Icon angezeigt werden würde. Icons hab ich schon eingebunden, nach meinem 1,2,3- Plan wäre es dann ja immer das selbe Icon. Geht hier sowas wie

page.10.marks.MENU_LINKS.1.ACT.before.cObject.dataWrap = blabla<img scr=1.jpg>
page.10.marks.MENU_LINKS.2.ACT.before.cObject.dataWrap = blabla<img scr=2.jpg>
page.10.marks.MENU_LINKS.3.ACT.before.cObject.dataWrap = blabla<img scr=3.jpg>

oder

page.10.marks.MENU_LINKS.1-5.ACT.before.cObject.dataWrap = blabla<img scr=1.jpg>
[TMENU = 1]
page.10.marks.MENU_LINKS.1-5.ACT.before.cObject.dataWrap = blabla<img scr=2.jpg>
[TMENU = 2]

....???

thx Neko 😃

maik ·

Du kannst ein Menü erstellen und dann in die anderen Menü Objekte vererben.

page.10.marks.HAUPTMENU {
  deine 30 Zeilen TS
}
page.10.marks.MENU1 < page.10.marks.HAUPTMENU
page.10.marks.MENU2 < page.10.marks.HAUPTMENU
page.10.marks.MENU3 < page.10.marks.HAUPTMENU
page.10.marks.MENU4 < page.10.marks.HAUPTMENU
page.10.marks.MENU5 < page.10.marks.HAUPTMENU

Wenn du nun in den einzelnen Menüs einige Eigenschaften ändern möchtes, dann kannst du das einfach machen.

page.10.marks.MENU1.1.ACT.before.cObject.dataWrap = blabla<img scr=1.jpg>

Alle Eigenschaften, die du im HAUPTMENÜ angelegt hast stenen sind auch in den MENU1-5 vorhanden.

Proximo ·

Oder du sparst dir sogar noch das (is jetzt langsam wirklich nichtmehr nötig aber nicht mit sondernlich viel probs verbunden):

page.10.marks.MENU1 {
deine 30 Zeilen TS +
page.10.marks.MENU1.1-5.ACT.before.cObject.dataWrap = blabla<img scr=1.jpg>
}
page.10.marks.MENU2 < page.10.marks.MENU1
page.10.marks.MENU3 < page.10.marks.MENU1
page.10.marks.MENU4 < page.10.marks.MENU1
page.10.marks.MENU5 < page.10.marks.MENU1

Und dann fängst du wieder an und veränderst menü 2,3,4,5

page.10.marks.MENU2.1-5.ACT.before.cObject.dataWrap = blabla<img scr=2.jpg>

page.10.marks.MENU3.1-5.ACT.before.cObject.dataWrap = blabla<img scr=3.jpg>

...

Funktioniert ganz gut wenn du nur wenige veränderungen bei den folgenden Menüs hast und ist noch etwas kürzer 😉

MFG Proximo

EDIT:
Wiso tut ihr euch das alle an mit dem sch...önen:
page.10.marks....

Die Lösung heißt Autoparser und ist sehr Praktisch und in jedem Anfängertut zu finden... bzw hier:

http://www.bluelion.at/external/rlmptmplselector_setup_tutorial_DE.pdf

neko1512 ·

bin zu dabbig für die Umsetzung 🙁
so wie ich das jetzt verstanden habe wären in deinem Lösungsvorschlag verschiedene komplett voneinander unabhängige Menüs. Ich habe aber nur ein Menü und auch nur einen Marker. Im Moment sieht meine Lösung so aus:

10.marks.MENU_LINKS = HMENU
10.marks.MENU_LINKS{

1 = TMENU
1 {...}

2= TMENU
2= {...}

aber wenn ich jetzt deine Lösung übernehmen würde, würde ich ja komplette Menüs vererben und nicht die einzelnen Ebenen. Oder bin ich grad zu blöd?

maik ·

Ich habe einPunkt vergessen.
Es mußte natürlich so heißen:

page.10.marks.MENU.1 < page.10.marks.HAUPTMENU 
page.10.marks.MENU.2 < page.10.marks.HAUPTMENU 
page.10.marks.MENU.3 < page.10.marks.HAUPTMENU 
page.10.marks.MENU.4 < page.10.marks.HAUPTMENU 
page.10.marks.MENU.5 < page.10.marks.HAUPTMENU
Proximo ·

Gut das Prinzip:

1. Erstellen des Menüs (so wie du es schon gemacht hast) mit allen Unterkategorien

2. Kopieren von Menü1 in alle anderen Menüs

menü2 < menü1
menü3 < menü1
menü4 < menü1
menü5 < menü1

3. Anpassen der Menüs indem man einfach die variable des menüs verwendet als wollte man ein Menü starten, allerdings nur die veränderungen eintragen... FERTIG

MFG Proximo

neko1512 ·

sorry ich raffs immer noch nicht ganz.

ich hab ja nur einen marker, ist das jetzt aus deinem beispiel MENU oder HAUPTMENU?

und ich kämpfe immer noch mit den Zahlen...
im Moment steht da:

10.marks.MENU_LINKS = HMENU
10.marks.MENU_LINKS{

1 = TMENU
1 {...}
2 = TMENU
2 {...}

wenn ich jetzt die Zahlen weglasse, wo bring ich dem dann bei, daß ich ein TMENU hab?
ich weiß das ist jetzt viel verlangt, aber kannst du mir mal nen Teil meines Codes beispielhaft umbauen, damit auch so ganz dumme wie ich das kapieren?

Auszug:

10.marks.MENU_LINKS = HMENU
10.marks.MENU_LINKS{

1 = TMENU
1 {
expAll = 0
wrap = <span style="font-size:x-small">|</span>
NO {
linkWrap = |
doNotShowLink = 1
before.cObject = TEXT
before.cObject.field = uid
}
}
}
}

page.10.marks.MENU_LINKS.1.NO.before.cObject.dataWrap = <a href="index.php?id=|&view=0" accesskey ="{field:tx_govaccessibility_accesskey}" title="{field:title}:{field:subtitle} - Accesskey:{field:tx_govaccessibility_accesskey}"><img border="0" src="fileadmin/images/icons/xpdesktop.gif" alt="Link">&nbsp;
[globalVar = GP:view = 1]
page.10.marks.MENU_LINKS.1.NO.before.cObject.dataWrap = <a href="index.php?id=|&view=1" accesskey ="{field:tx_govaccessibility_accesskey}" title="{field:title}:{field:subtitle} - Accesskey:{field:tx_govaccessibility_accesskey}"><img border="0" src="fileadmin/images/icons/xpdesktop.gif" alt="Link">&nbsp;
[global]

page{
10.marks.MENU_LINKS{
1{
NO{

after.cObject = TEXT
after.cObject.field = title//nav_title
after.cObject.htmlSpecialChars = 1
after.cObject.wrap = |</a><br>

}
ACT = 1
ACT {
linkWrap = |
doNotShowLink = 1
before.cObject = TEXT
before.cObject.field = uid
}
}
}
}

page.10.marks.MENU_LINKS.1.ACT.before.cObject.dataWrap = <a href="index.php?id=|&view=0" accesskey ="{field:tx_govaccessibility_accesskey}" title="{field:title}:{field:subtitle} - Accesskey:{field:tx_govaccessibility_accesskey}"><img border="0" src="fileadmin/images/icons/xpdesktop.gif" alt="Link">&nbsp;
[globalVar = GP:view = 1]
page.10.marks.MENU_LINKS.1.ACT.before.cObject.dataWrap = <a href="index.php?id=|&view=1" accesskey ="{field:tx_govaccessibility_accesskey}" title="{field:title}:{field:subtitle} - Accesskey:{field:tx_govaccessibility_accesskey}"><img border="0" src="fileadmin/images/icons/xpdesktop.gif" alt="Link">&nbsp;
[global]

page{
10.marks.MENU_LINKS{
1{
ACT{
after.cObject = TEXT
after.cObject.field = title//nav_title
after.cObject.htmlSpecialChars = 1
after.cObject.wrap = |</a><br>

}
}

2 = TMENU
2 {....}

maik ·

Ich glaube, da hat jemand die Menu Basics noch nicht so richtig kapiert.

HMENU erzeugt ein Menü

in dem HMENU Objekt werden nummerische Objekte ein für jede Ebene angelegt.

"1" ist das Objekt für die erste Navigationsebene
"2" entsprechend das für die zweite und so weiter.

in den Objekten 1,2,3,... stellst du dann ein von welche Art du das Menü gerne hättest TMENU, GMENU,...
und bestimmst dann die Eigenschaften.

Das Menü kennt unterschiedliche Zustände NO, RO, CUR, ACT,...
NO ist der Standart Zustand, RO z.B. für den Roll Over Fall.
Diese Zustände können dann auch unterschiedlich eingestellt werden.

Damit sollte das Grundgerüst doch erstmal erzeugt werden können.

neko1512 ·

das grundgerüst habe ich ja. ich habe für meine erste ebene im menü alles so geschrieben, wie ich es brauche, und das geht ja auch.

nachdem was ich jetzt von dir gelesen habe, hatte ich gehofft ich könnte sowas machen wie

10.marks.MENU = HMENU
10.marks.MENU {

1 = TMENU
1 { ausführlicher Code}

2 = TMENU
2 < 1

3 = TMENU
3 < 1

usw....
}

das klappt aber leider nicht.

maik ·

Doch, das geht, du musst nur aufpassen beim vererben

Das Zuweisen des MENU Typs kannst du dir sparen

// überflüssig
2 = TMENU

Die Vererbung des Objektes 1 reicht aus, da da der Typ ja schon eingestellt wurde.

2 < 1

Nur ist meist das Problem, dass relative Referenzierung meist nicht so hinhaut. Da kommt es auf die Klammerung an.

Schreibe einfah den komplette Objektnamen aus.

2 < PAGE.10.marks.MENU.1

Das gehts auf jeden Fall.

neko1512 ·

hey cool das geht schonmal. und wenn ich jetzt immer noch so dreist bin und eine Angabe je Ebene ändern möchte, schreibe ich dann unter meine Vererbung den Alternativcode? z.B.

2 < page.10.marks.MENU_LINKS.1
page.10.marks.MENU_LINKS.2.NO.before.cObject.dataWrap = .....

3 < page.10.marks.MENU_LINKS.1
page.10.marks.MENU_LINKS.3.NO.before.cObject.dataWrap = .....

maik ·

Probieren geht über studieren! 😉
Jep so gehts.

Du kannst aber auch

3.NO.before.cObject.dataWrap = ...

schreiben, wenn das korrekt geklammert ist.