Page 1 of 1

Fehler in NAV_LIST_UL beim Aufbau einer Bootstrap Navigation [solved]

Posted: Wed 2. Feb 2022, 12:16
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.

Re: Fehler in NAV_LIST_UL beim Aufbau einer Bootstrap Navigation

Posted: Wed 2. Feb 2022, 18:48
by Oliver Georgi

Re: Fehler in NAV_LIST_UL beim Aufbau einer Bootstrap Navigation

Posted: Wed 2. Feb 2022, 19:25
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:

Re: Fehler in NAV_LIST_UL beim Aufbau einer Bootstrap Navigation

Posted: Wed 2. Feb 2022, 19:46
by Oliver Georgi

Re: Fehler in NAV_LIST_UL beim Aufbau einer Bootstrap Navigation

Posted: Wed 2. Feb 2022, 20:18
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

Re: Fehler in NAV_LIST_UL beim Aufbau einer Bootstrap Navigation

Posted: Wed 2. Feb 2022, 20:24
by Oliver Georgi
Sollte auch das alte Problem der doppelten Klassennamen beseitigen.

Re: Fehler in NAV_LIST_UL beim Aufbau einer Bootstrap Navigation

Posted: Wed 2. Feb 2022, 20:40
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

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

Posted: Wed 2. Feb 2022, 20:44
by Oliver Georgi
Nein, hat andere Gründe. Siehst Du im Code.