Jak inteligentně použít ifCurrent makro

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
joe
Člen | 313
+
0
-

Ahoj,

rád bych nějak hezky použil makro ifCurrent v šabloně, ale nevím přesně jak, situace je taková, že HTML vypadá takhle:

<ul>
<li class="current"><a href="#"><b>Aktuální stránka</b></a></li>
<li><a href="#">Další stránka</a></li>
<li><a href="#">A poslední stránka</a></li>
</ul>

Jenom přidání třídy current nestačí a z pohledu HTML to je nedostatečné rozlišení aktivní stránky v menu, proto tam chci mít další tag, třeba uvnitř odkazu, b. Jak bych to tedy měl napsat, abych v šabloně neměl binec?

Editoval joe (14. 1. 2014 14:50)

nanuqcz
Člen | 822
+
0
-

Mě vždycky stačilo tohle:

<ul>
	<li n:class="$presenter->isLinkCurrent(...)? current"><a href="#">Aktuální stránka</a></li>
	<li><a href="#">Další stránka</a></li>
	<li><a href="#">A poslední stránka</a></li>
</ul>

Tučný text můžeš přece nastavit přes CSS:

li.current a {
	font-weight: bold;
}
joe
Člen | 313
+
0
-

To nestačí, zkus si vypnout styly, nepoznáš jaká stránka je aktivní, a která ne. Zvýraznil jsem tu část v prvním příspěvku :-)

leninzprahy
Člen | 150
+
0
-

Co třeba?

<ul>
	<li n:class="$presenter->isLinkCurrent(...)? current">
		<a href="#"><b n:tag-if="$presenter->isLinkCurrent(...)">Aktuální stránka</b></a>
	</li>
llook
Člen | 407
+
0
-

Potom už jenom vyčlenit proměnnou:

<ul>
    {var $isCurrent = $presenter->isLinkCurrent(...)}
    <li n:class="$isCurrent ? current">
        <a href="#"><b n:tag-if="$isCurrent">Aktuální stránka</b></a>
    </li>
joe
Člen | 313
+
0
-

Díky za odpovědi

leninzprahy
Víckrát používat isLinkCurrent se mi právě nechtělo.

Potěšilo mě zjištění, že atribut n:tag-if vyjme jenom ten tag bez jeho obsahu, takže asi zůstanu u varianty, kterou napsal llook, jenom mi to přišlo trochu zbytečné, ale asi to jinak nejde :)