Top Navigation schaltet alles class=active

Alles rund um Module und Plugins in CONTENIDO 4.9.
Antworten
Faar
Beiträge: 1951
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Hat sich bedankt: 15 Mal
Kontaktdaten:

Top Navigation schaltet alles class=active

Beitrag von Faar »

Hallo,
die Top Navigation schaltet alle CSS-Klassen auf "active", aber es sollte doch nur die Kategorie mit "active" bezeichnet sein, die auch gerade angezeigt wird? :shock:
Und das kuriose daran ist, dass es Schritt für Schritt verschwindet:
Also ich klicke den ersten Menüpunkt an und alle Menüpunkte haben class="active", dann klicke ich den zweiten Menüpunkt an und der erste Menüpunkt erhält dann class=" " aber alle weiteren noch class="active".
Das geht so weiter bis zum letzten Menüpunkt, wo es dann scheinbar korrekt aus sieht.
Woran kann das liegen?

Außerdem ist beim letzten Menüpunkt noch ein störendes <ul> </ul> im <li> enthalten. :motz:

VG,
Frank
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.
Faar
Beiträge: 1951
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Hat sich bedankt: 15 Mal
Kontaktdaten:

Gelöst: Top Navigation schaltet alles class=active

Beitrag von Faar »

Also das eine habe ich gelöst:

Im Smarty-Template wird die Variable aClass in der foreach-Schleife mit "active" belegt, wenn die aktuelle idcat mit der idcat im Pfad übereinstimmt.
Soweit logisch.
Aber dann wird die Variable nicht mehr geändert, das heißt, sie hat im Fall dass man den ersten Menü-Punkt anklickt, immer "active" drin stehen.
Folglich werden also alle folgenden Menüpunkte als aktiv gekennzeichnet.
Orignal-Code:

Code: Alles auswählen

<!-- navigation_top/template/get.tpl -->

<ul>
    {foreach from=$tree item=wrapper}
        {assign var="idcat" value=$wrapper.idcat}
        {assign var="url" value=$wrapper.item->getLink()}
        {assign var="name" value=$wrapper.item->get('name')}
        {if $idcat|in_array:$path}
            {assign var="aClass" value='active'}
        {/if}
        <li>
			<a class="{$aClass}" href="{$url}" title="{$name}">{$name}</a>
        {if $idcat|in_array:$path}
            {include file="navigation_top/template/get.tpl"
                tree=$wrapper.subcats path=$path}
        {/if}
        </li>
     {/foreach}
</ul>

<!-- /navigation_top/template/get.tpl -->
Nun habe ich dem Smarty-Dingens einfach ein {else} verpasst und die Variable aClass ohne Inhalt gesetzt.
Und schwupps, funktioniert es.

Code: Alles auswählen

<!-- navigation_top/template/get.tpl -->

<ul>
    {foreach from=$tree item=wrapper}
        {assign var="idcat" value=$wrapper.idcat}
        {assign var="url" value=$wrapper.item->getLink()}
        {assign var="name" value=$wrapper.item->get('name')}
        {if $idcat|in_array:$path}
            {assign var="aClass" value='active'}
		{else}
			{assign var="aClass" value=''}
        {/if}
        <li>
			<a class="{$aClass}" href="{$url}" title="{$name}">{$name}</a>
        {if $idcat|in_array:$path}
            {include file="navigation_top/template/get.tpl"
                tree=$wrapper.subcats path=$path}
        {/if}
        </li>
     {/foreach}
</ul>

<!-- /navigation_top/template/get.tpl -->
Das sollte eigentlich nicht nicht so sein? :roll:

Aber ich frage mich, wo hier bei Smarty der Vorteil gegenüber PHP sein soll?
Ist dieses "HTML-Template" etwa übersichtlicher oder verständlicher?
Da kann ich doch gleich wieder ein PHP-HTML-Mix schreiben, muss ich mich nicht auch noch mit Smarty rumschlagen.
Typo3 ist schon einen verfänglichen Weg gegangen mit Typo-Script und hat es nicht besser gemacht mit der neuen Template-Sprache Fluid.
PHP IST bereits eine Sprache für Templates... es sollte also schon deutlich besser sein, wenn man statt PHP noch was anderes drauf setzt, denn neues Zeugs = neue Fehlerquellen.
Zumindest hier sehe ich nichts besseres.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.
mikesteiner99
Beiträge: 93
Registriert: Mi 12. Aug 2009, 11:01
Wohnort: Au, Zürich
Kontaktdaten:

Top Navigation schaltet alles class=active

Beitrag von mikesteiner99 »

Hallo Faar

Also ich finde die Ergänzung von Smarty eine grosse Bereicherung von Contenido. Smarty ist im Gegensatz von TypoScript ein stark verbreitetes Templatesystem und nicht NUR für Contenido Benutzer ein Begriff. Ein anderer meines Erachtens grosser Vorteil ist das automatische Caching von Smarty. Aber die Systeme haben immer verschiedene Vor und Nachteile, Befürworter und Gegner.

Das "nur" meine eine Meinung
Grüsse mike


Gesendet von meinem iPhone mit Tapatalk
Antworten