Fehler in NAV_LIST_UL beim Aufbau einer Bootstrap Navigation [solved]

Hier bekommst Du deutschsprachigen Support. Keine Fehlermeldungen oder Erweiterungswünsche bitte!
Post Reply
User avatar
Uwe367
Posts: 1206
Joined: Sat 15. Sep 2007, 07:19
Location: Koblenz

Fehler in NAV_LIST_UL beim Aufbau einer Bootstrap Navigation [solved]

Post by Uwe367 »

Hallo allerseits.
Ich bin gerade dabei eine Bootstrap Navigation zu bauen und bin dabei ein merkwürdiges Verhalten gestoßen und das sieht für mich aus als wenn es ein Fehler wäre.
Ich habe folgenden RT: {NAV_LIST_UL:PB,0,2,|nav navbar-nav,active|nav-link}
Damit bekommt mein erstes <ul> die Klassen nav navbar-nav zugewiesen. Das ist richtig.
Im Quellcode sieht das dann so aus:

Code: Select all

<ul class="nav navbar-nav">

   <li class="nav-item active"><a href="index-view.html" class="nav-link" title="Home">Home</a></li>
   <li class="nav-item"><a href="test-1.html" class="nav-link" title="Test 1">Test 1</a></li>
   <li class="nav-item"><a href="test-2.html" class="nav-link" title="Test 2">Test 2</a></li>
   <li class="nav-item"><a href="test-3.html" class="nav-link" title="Test 3">Test 3</a></li>
</ul>
Die Klasse nav-item wird über die conf.template_default.inc.php eingeschleust.
Solange das Elternelement Home aktiv ist, ist alles ok.
Das Elternelemt bezieht die Klasse nav-link hierbei aus dem RT da sich diese Klasse nicht über die conf.template_default.inc.php einschleusen lässt.
Bei den Unterebenen sieht das anders aus. Diese bekommen die Klasse aus der conf.template_default.inc.php :
'navlist-link-class' => 'nav-link',

Klicke ich nun aber auf einen Link, der eine Unterebene öffnet passiert folgendes:
Das Eleternelement verliert den active State, was ja auch richtig ist, aber es verliert ebenfalls die Klasse nav-link. Statt dessen wird diese Klasse nun beim aktiven Element zwei mal gerendert da scheinbar mit dem active State auch die Klasse "verschoben" wird. Jedoch hat das nichts mit dem State zu tun da die Klasse auch verschwindet wenn ich versuchsweise active entferne.

Code: Select all

<ul class="nav navbar-nav">

   <li class="nav-item"><a href="index-view.html" title="Home">Home</a></li>
   <li class="nav-item active"><a href="test-1.html" class="nav-link nav-link" title="Test 1">Test 1</a></li>
   <li class="nav-item"><a href="test-2.html" class="nav-link" title="Test 2">Test 2</a></li>
   <li class="nav-item"><a href="test-3.html" class="nav-link" title="Test 3">Test 3</a></li>
</ul>
Durch den Verlust der Klasse beim Elternelement ändert sich natürlich auch das optische Erscheinungsbild, der Link "springt".

Entferne ich nun die Klasse aus dem RT.... {NAV_LIST_UL:PB,0,2,|nav navbar-nav,active}, so habe ich auf normalem Wege keine Möglichkeit diese dem Elternelement zuzuweisen da dies über die conf.template_default.inc.php nicht umsetzbar ist.

Der einzige Weg, der mir hier bleibt nennt sich Frontend-Render mit folgendem Script:

Code: Select all

$content['all'] = str_replace('<a href="index-view.html" title="Home">Home</a>', '<a href="index-view.html" class="nav-link" title="Home">Home</a>', $content['all']);
Damit bekomme ich es hin dass nav-link auch dann gerendert wird, wenn das Elternelement nicht aktiv ist und damit bleibt dann auch das optische Erscheinungsbild bestehen.

Ich denke dass hier ein Fehler vorliegt, denn ich kann mir beim besten Willen nicht vorstellen dass Oliver das absichtlich so aufgebaut hat.
Vielleicht hat ja jemand das gleiche Problem und sucht nach einer vorübergehenden Lösung.

@Oliver....
Wenn nötig erstelle ich gerne ein Issue.
Last edited by Uwe367 on Wed 2. Feb 2022, 20:42, edited 1 time in total.
User avatar
Uwe367
Posts: 1206
Joined: Sat 15. Sep 2007, 07:19
Location: Koblenz

Re: Fehler in NAV_LIST_UL beim Aufbau einer Bootstrap Navigation

Post by Uwe367 »

Oliver Georgi wrote: Wed 2. Feb 2022, 18:48 schau auch hier: https://github.com/slackero/phpwcms/blo ... c.php#L323
Da habe ich geschaut Oliver und, wie oben geschrieben auch versucht, aber es ist nicht möglich dem a-Tag der Elternebene (oberste Ebene ID 0) in der conf.template_default.inc.php eine Klasse zuzuweisen. Das klappt scheinbar nur über den verwendeten RT. Dummerweise verschwindet die Klasse auch wieder sobald der Link nicht mehr active ist. Irgendwie verhält sich diese Ebene anders als die darunter liegenden, was das betrifft.
Hier hatte ich das Problem auch schonmal angesprochen: viewtopic.php?p=151271&hilit=nav+level#p151271 und Du wolltest da wohl mal nach schauen :wink:
Von daher ist das Thema jetzt gar nicht so neu, aber wenn man nicht mehr dran denkt steht man erstmal wieder auf dem Schlauch und wundert sich warum das nicht funktioniert.
Ich für meinen Teil habe damit kein Problem das über Frontend Render zu lösen, ich muss es mir nur mal merken. Ich werd alt :lol:
User avatar
Uwe367
Posts: 1206
Joined: Sat 15. Sep 2007, 07:19
Location: Koblenz

Re: Fehler in NAV_LIST_UL beim Aufbau einer Bootstrap Navigation

Post by Uwe367 »

Ja.. das hilft sogar sehr denn nun bekommen ALLE Ebenen die in der conf.template_default.inc.php definierte Klasse zugewiesen.
Hätte jetzt so Adhoc nicht sein müssen, aber besten Dank fürs schnelle erledigen :D
User avatar
Oliver Georgi
Site Admin
Posts: 9888
Joined: Fri 3. Oct 2003, 22:22
Contact:

Re: Fehler in NAV_LIST_UL beim Aufbau einer Bootstrap Navigation

Post by Oliver Georgi »

Sollte auch das alte Problem der doppelten Klassennamen beseitigen.
Oliver Georgi | phpwcms Developer | GitHub | LinkedIn | Систрон
User avatar
Uwe367
Posts: 1206
Joined: Sat 15. Sep 2007, 07:19
Location: Koblenz

Re: Fehler in NAV_LIST_UL beim Aufbau einer Bootstrap Navigation

Post by Uwe367 »

Oliver Georgi wrote: Wed 2. Feb 2022, 20:24 Sollte auch das alte Problem der doppelten Klassennamen beseitigen.
Ja stimmt. Hatte ich jetzt gar nicht drauf geachtet, aber ergibt sich ja von selbst wenn ich die Klasse an nur noch EINER Stelle defineren muss.
Besten Dank nochmal :D
User avatar
Oliver Georgi
Site Admin
Posts: 9888
Joined: Fri 3. Oct 2003, 22:22
Contact:

Re: Fehler in NAV_LIST_UL beim Aufbau einer Bootstrap Navigation [solved]

Post by Oliver Georgi »

Nein, hat andere Gründe. Siehst Du im Code.
Oliver Georgi | phpwcms Developer | GitHub | LinkedIn | Систрон
Post Reply