NAV_LIST_UL --> Nur Chaos und lauter Fragen

Get help with installation and running phpwcms here. Please do not post bug reports or feature requests here.
Post Reply
User avatar
Jensensen
Posts: 3000
Joined: Tue 17. Oct 2006, 21:11
Location: auf der mlauer

NAV_LIST_UL --> Nur Chaos und lauter Fragen

Post by Jensensen »

(sorry, only in german)

Vorab:
Dank an flip-flop, der hier mal ein bisserl Klarheit reinbringt, welche Navigations-RT existieren und wie diese funktionieren.

Nun zum Problem/Feststellung:

Ich habe ein Sub-Menü auf meinen Seiten eingebaut mit NAV_LIST_UL.
So, wie hier mehrfach beschrieben, mit folgenden zu verwendenden Parametern:

menu_type ,start_id ,max_level ,class_path ,class_active ,ul_id_name ,wrap_ul_div (0 = off, 1 = <div>, 2 = <div id="">), wrap_link_text (<em>|</em>


Wie gewünscht funktionieren, tut dagegen lediglich folgender RT:
{NAV_LIST_UL:F,9,,subnavmenu,active}

wobei
'subnavmenu' die class ist, wodurch ich mit den CSS eine saubere verschachtelte UL-Liste erhalte.

und 'active' die Kosmetik des Menüs der aktiven Schalter regelt.


Frage am Rande: Was ist eigentlich 'class_path'??


Jetzt kommt der 1. Knüller:
( Hinweis: Die anderen Parameter habe ich weggelassen, keine Kommas usw. - wie flip-flop in seinen Beispielen.
Denn, ändere ich etwas an der Schreibweise des RT, erscheint gar kein Menü oder nur Müll!!!)

Mit dem RT: {NAV_LIST_UL:F,9,,subnavmenu,active}
erhalte ich vom Prinzip her etwa:

UL class ="subnavmenue"
li
li class ="active"


ABER NUR DANN, wenn dieser RT wie folgt eingebunden ist:

a) entweder auf der Seite mit der ID=9 oder
b) in dem Zweig, in dem auch die ID-9 liegt ALSO NUR auf Seiten oberhalb/unterhalb der Strukturebene 9


In diesen Fällen wäre das OK.
Klickt man im Menü aber auf eine andere Kategorie (ausserhalb des Zweiges ID-9), wird folgende Liste ausgegeben:

UL
li
li


Hier fehlt die class ="subnavmenue" im UL-Tag
Folge: Die Formartierung / CSS ist hin!!!!

Wieso wird ausserhalb der Strukturebenen-ID die angegebene Class (subnavmenue) "verschluckt"??


Wobei es hiermit klappt:

2. Knüller:

Das erwünschte Submenü lasse ich auf jeder Seite direkt durch folgenen PHP Code parsen:

Code: Select all

[PHP] 
if(isset($GLOBALS['LEVEL_ID'][1])) {
$level_id = $GLOBALS['LEVEL_ID'][1];
echo '{NAV_LIST_UL:F,'.$level_id.',,subnavmenu,active}';
}
[/PHP]
Jetzt habe ich auf jeder Seite die korrekte Ausgabe.


3. Knüller:


Beispiel: Wir sind auf der 'HTML-Seite' mit ID-9 also $level_id --> 9

Dort habe ich beide Varianten untereinander in der Vorlage eingebunden:

Code: Select all

[i]MENUE 1 test php[/i]

[PHP] 
if(isset($GLOBALS['LEVEL_ID'][1])) {
$level_id = $GLOBALS['LEVEL_ID'][1];
echo '{NAV_LIST_UL:F,'.$level_id.',,subnavmenu,active}';
}
[/PHP]

<hr />

[i]MENUE 2 test RT[/i]

{NAV_LIST_UL:F,9,,subnavmenu,active}


Ergebnis:
--> Menü 1 (PHP) erscheint mit class ="subnavmenue" und ist OK

--> Menü 2 (RT) - eigentlich identisch!!!!????? erscheint OHNE class ="subnavmenue"


Ich komme da nicht mehr mit. Ich raff das nicht.

Hat jemand von Euch dafür eine Erklärung?


Hintergrund ist ein Menü, dass auf jeder Seite sowohl die übergeordneten Seiten/Strukturebenen als auch alle darunterliegenden/current Rubriken zeigt!!!

Wie bekommt man das hin??

Viele Grüße und Dank
Jensensen[/code]
User avatar
juergen
Moderator
Posts: 4556
Joined: Mon 10. Jan 2005, 18:10
Location: Weinheim
Contact:

Post by juergen »

Hallo Jensensen,

um bei deinem Beispiel zu bleiben:

Das Menu unter der jeweiligen Oberrubrik:

Code: Select all


[PHP]
if(isset($GLOBALS['LEVEL_ID'][1])) {
$level_id = $GLOBALS['LEVEL_ID'][1];
$name= $GLOBALS['LEVEL_STRUCT'][$GLOBALS['LEVEL_KEY'][$level_id]];
echo '<li id="active"><b>'.$name. ' -></b> </li><br />';
echo '{NAV_LIST_UL:F,'.$level_id.',2,,active,,,}';
}
[/PHP]

Die Formtierungen denk dir weg, ich habe das aus meiner YAML Testseite kopiert. Da ist dann noch der Name der jeweils oberen Kategorie mit dabei.... ($name)


Auf Dauer will ich aber weg von $GLOBALS, in den Frontend Render.. Zeit müsste man haben :D

Laufen siehts das, wenn du auf meinen www klickst

Jürgen
User avatar
flip-flop
Moderator
Posts: 8178
Joined: Sat 21. May 2005, 21:25
Location: HAMM (Germany)
Contact:

Post by flip-flop »

@Jensensen
Mit dem RT: {NAV_LIST_UL:F,9,,subnavmenu,active}
erhalte ich vom Prinzip her etwa:

UL class ="subnavmenue"
li
li class ="active"
Das scheint ein Fehler in der Programmierung zu sein.
Das Menü reagiert in dieser Form so wie ein levelbasiertes script.

Das sollte funktionieren:
<div class="subnavmenu">{NAV_LIST_UL:F,ID,,,active}</div>

http://www.phpwcms.de/forum/viewtopic.php?t=12716

Gruß Knut
>> HowTo | DOCU | FAQ | TEMPLATES/DOCS << ( SITE )
User avatar
Jensensen
Posts: 3000
Joined: Tue 17. Oct 2006, 21:11
Location: auf der mlauer

Post by Jensensen »

flip-flop wrote:@Jensensen

Das scheint ein Fehler in der Programmierung zu sein.
Das Menü reagiert in dieser Form so wie ein levelbasiertes script.

Das sollte funktionieren:
<div class="subnavmenu">{NAV_LIST_UL:F,ID,,,active}</div>

http://www.phpwcms.de/forum/viewtopic.php?t=12716

Gruß Knut

Hi Knut,

erst einmal Danke, die <div class="subnavmenu"> um den PHP-Tag zu legen war keine schlechte Idee.
Aber das Problem besteht noch immer!

Ich befürchte, es ist in der Tat ein Fehler in der Programmierung:

Habe folgendes ausprobiert:

Code: Select all

<div class="subnavmenu">
[PHP] 
if(isset($GLOBALS['LEVEL_ID'][1])) {
$level_id = $GLOBALS['LEVEL_ID'][1];
echo 'LEVEL ID: '.$level_id.' <br />
{NAV_LIST_UL:F,'.$level_id.',1,,active}';
}
[/PHP]
</div>
D.h. oberhalb des Menüs, soll (mal nur so zur Kontrolle) auf den HTML-Seiten die jeweilige Strukturlevel-ID erscheinen. Die jeweils aktuelle! So meine Erwartung.


Komisch: auf jeder Seite, auch der "17en" Unterseite (beispielsweise ID=5 ) erscheint mit obigem PHP-Tag:

LEVEL ID: 1


Das hat zur Folge, das ich eigentlich ungefähr 37 VORLAGEN für sämtliche Strukturlevel anlegen muss!!!!

Gerade das soll der PHP-Snippet ja leisten.
Nun habe ich wieder keine Idee mehr.

Jemand von Euch?

Wie kriege ich auf jeder seite die AKTUELLE LEVEL ID in den PHP-Tag??

Hintergrund ist übrigens eine Menüausgabe, die mir auf jeder Seite NUR die aktuellen Seiten und die Seiten 1 Level höher anzeigt.

Also etwa NAV_LIST_CURRENT. Allerdings zeigt diese Liste NUR EINE EINZIGE (die aktuelle Oberseite) und eben nicht auch die restlichen auf dem gleichem Level! (quasi nur einen Zeig, einen Teilabschnitt).


Ich befürchte, das geht wohl nur mit ID's und nicht mit CLASSES und li li --> display none

Dann muss ich nochmal an die CSS ran. Shit...


Hat jemand eine andere Lösung?

Vielen Dank und viele Grüße aus dem Münsterland
Jensensen
User avatar
Jensensen
Posts: 3000
Joined: Tue 17. Oct 2006, 21:11
Location: auf der mlauer

Ich glaub ich hab's!!!

Post by Jensensen »

@DF6IH

Hab Deinen Vorschlag nun auch probiert. Ist ebenfalls nicht ganz das, was ich suchte. Aber zu wissen, wie man oberhalb die aktuelle "LI" reinschreibt, ist womöglich auch ein guter Tipp, den ich später gebrauchen kann.


@all

Den aktuellen Strukturzweig erhält man wie folgt:

Code: Select all

[PHP] 
if(isset($GLOBALS['LEVEL_ID'][1])) {
$level_id = $GLOBALS['LEVEL_ID'][1];
... 
Wenn man nun hier die ['LEVEL_ID'][1] entsprechend variert, bekommt man mit NAV_LIST_UL ein Menü ab dem jeweils gewählten/aktuellen Ast/Strukturlevel der Site.

Wobei folgendes gilt:

['LEVEL_ID'] [0] --> HOME
['LEVEL_ID'] [1] --> Seiten der ersten Ebene (quasi NAV_LIST_TOP)
['LEVEL_ID'] [2] --> Seiten der zweiten Ebene
usw.

Damit bekommt man demnach die entsprechenden Zweige/Ausschnitte der Site in ein separates Menü.

Greetz und vielen Dank für die Tipps!! :D
Jensensen

PS: Was fehlt, ist ne ordentliche Doku.....
User avatar
flip-flop
Moderator
Posts: 8178
Joined: Sat 21. May 2005, 21:25
Location: HAMM (Germany)
Contact:

Post by flip-flop »

Yep, ist hier im Prinzip so beschrieben.
Einige Zusammenhänge: http://www.phpwcms.de/forum/viewtopic.php?p=71676#71676
Und weiter unten der Level-Lift: http://www.phpwcms.de/forum/viewtopic.php?p=71754#71754

Knut
>> HowTo | DOCU | FAQ | TEMPLATES/DOCS << ( SITE )
Post Reply