Page 1 of 1

Probleme mit Tab-Navigation

Posted: Thu May 17, 2007 3:29 pm
by Sandra
Hallo,

ich versuche mich gerade an einer Navigation mit Tabs (wie bei YAML oder Andreas09). Damit ich die Links in der Verwaltungsoberfläche eingeben kann, habe ich die config.inc.php von yamlport genommen. Den Code für das Template hatte ich von Andreas09. Ich möchte aber, dass der Tab der aktuell angezeigten Seite eine andere Farbe hat.

Bei Andreas09 hat immer der Tab für die Homepage eine andere Farbe. Da sieht der Code folgendermaßen aus:

Code: Select all

<div id="mainmenu">
<ul>
<li><a class="current" href="{$serendipityBaseURL}">{$CONST.HOMEPAGE}</a></li>
{foreach from=$navlinks item="navlink"}
<li><a href="{$navlink.href}" title="{$navlink.title}">{$navlink.title}</a></li>
{/foreach}
</ul>
</div>
Ich habe daraus mal folgendes gebastelt:

Code: Select all

<div id="navbar">
<ul class="navbar">
{foreach from=$navlinks item="navlink"}
{if $navlink.href == $pagelink}
<li><a href="{$navlink.href}" title="{$navlink.title}" class="current">{$navlink.title}</a></li>
{else}
<li><a href="{$navlink.href}" title="{$navlink.title}">{$navlink.title}</a></li>
{/if}
{/foreach}
</ul>
</div>
Ergebnis ist, dass die Navigation zwar funktioniert, die Tabs aber immer noch alle die gleiche Farbe haben, weil die CSS-Klasse "current" nicht ankommt. Egal was ich mache, die Tabs sind immer entweder grün oder blau, aber nie unterschiedlich...

Kann mir da jemand helfen?

LG
Sandra

Re: Probleme mit Tab-Navigation

Posted: Thu May 17, 2007 5:36 pm
by yellowled
Sandra wrote: Ich habe daraus mal folgendes gebastelt:

Code: Select all

<div id="navbar">
<ul class="navbar">
{foreach from=$navlinks item="navlink"}
{if $navlink.href == $pagelink}
<li><a href="{$navlink.href}" title="{$navlink.title}" class="current">{$navlink.title}</a></li>
{else}
<li><a href="{$navlink.href}" title="{$navlink.title}">{$navlink.title}</a></li>
{/if}
{/foreach}
</ul>
</div>
Ergebnis ist, dass die Navigation zwar funktioniert, die Tabs aber immer noch alle die gleiche Farbe haben, weil die CSS-Klasse "current" nicht ankommt.
Zunächst einmal kann man den Code sehr vereinfachen:

Code: Select all

<div id="navbar">
<ul>
{foreach from=$navlinks item="navlink"}
<li><a href="{$navlink.href}" title="{$navlink.title}" {if $navlink.href == $pagelink}class="current"{/if}>{$navlink.title}</a></li>
{/foreach}
</ul>
</div>
Die class für die ul ist im Prinzip a) nicht nötig (man kann sie ja via #navbar ul ansprechen) und b) sollte man, wenn überhaupt, eine id verwenden, da die Navigation (zumindest wahrscheinlich) nur einmal vorkommen wird. Und die if-Anweisung für das class="current" sollte man wie gezeigt »direkt« einbauen können (hoffe ich, ich kann's grad nicht testen).

So. Nun wäre nur noch die Frage zu klären, ob Du die richtigen Variablen mittels if kontrollierst. Gefunden habe ich dazu einen Beitrag von Abdussamad. Demnach bräuchtest Du in der config.inc.php Folgendes:

Code: Select all

$serendipity['smarty']->assign(array('currpage'=> "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']));
und müsstest die if-Anweisung dann wie folgt ändern:

Code: Select all

{if $currpage == $navlink.href}class="current"{/if}
Wie gesagt: Alles ungetestet, hoffe, es tut.

YL

Posted: Fri May 18, 2007 6:40 pm
by Sandra
Danke Yellowled,

leider funktioniert es immer noch nicht. Was ich aber sehr merkwürdig finde: Mit Abdussamads "Freshy"-Port funktioniert es bei mir auch nicht. Ich versuche es mal weiter.

Und danke für den gekürzten Code, Smarty kann ich gar nicht gut.

LG
Sandra

Posted: Fri May 18, 2007 8:32 pm
by Sandra
Hat sich erledigt! :)

Ich hatte die Navlinks in der Verwaltungsoberfläche relativ angegeben, die müssen absolut verlinkt sein, sonst klappt der Abgleich nicht... Entschuldigung, falls jetzt jemand unnötig überlegt hat.

LG
Sandra