Ako použiť {ifCurrent} makro na otváranie sekcie v menu

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

Zdravím vás,
potreboval by som poradiť s takouto vecou: Mám menu a v ňom sekcie

	<ul class="navig">
		<li><a n:href=":Default:default" {ifCurrent :Default:default}class="current"{/ifCurrent}>Úvod</a></li>
		<li><a n:href=":Blog:Default:default" {ifCurrent :Blog:default:default}class="current"{/ifCurrent}>Blog</a></li>
			{ifCurrent :Blog:default:default}
			<ul>
				<li><a n:href=":Blog:Autori:default">Autori</a></li>
				<li><a n:href=":Blog:Clanky:default">Najnovšie</a></li>
				<li><a n:href=":Blog:Clanky:oblubene">Najobľúbenejšie</a></li>
			</ul>
			{/ifCurrent}
	</ul>

Teraz ako vidíte, je to tak, že ak sa klikne na sekciu blog, tak sa zobrazí ten vnorený zoznam.
Lenže teraz, keď kliknem na odkaz Autori, tak sa ten vnorený zoznam zase skryje. Dá sa to nejako vyriešiť, aby to {ifCurrent} platilo pre všetko, čo začína na :Blog ???

Michal Vyšinský
Člen | 608
+
0
-

:Blog:*

Michal Vyšinský
Člen | 608
+
0
-

A co když použiješ:

{if $presenter->isLinkCurrent(':Blog:*')}
{/if}

Myslím, že macro ifCurrent je deprecated, ale jistý si nejsem.

Podle dokumentace by to mělo fungovat. Možná je problém v tom modulu…

Editoval Michal Vyšinský (1. 7. 2014 15:54)

David Matějka
Moderator | 6445
+
0
-

Tohle je asi mozne pouzit pouze jako „kterakoliv akce“ a nikoliv uz „kterykoliv presenter“

Michal Vyšinský
Člen | 608
+
+1
-

Ještě můžeš zkusit dát do BasePresenteru toto:

public function isModuleCurrent($module)
{
    return \Nette\Utils\Strings::startsWith($this->getName(), $module);
}

A požít v podmínce:

{if $presenter->isModuleCurrent('Blog')}

Editoval Michal Vyšinský (1. 7. 2014 16:34)

Michal Vyšinský
Člen | 608
+
0
-

Aha, tak v tom bude asi problém.

Čamo
Člen | 786
+
0
-

Díky moc funguje to.

Čamo
Člen | 786
+
0
-

Nefunguje mi to. Teraz to mám takto:

<ul class="navig">
    <li><a n:href=":Default:default" {ifCurrent :Default:default}class="current"
{/ifCurrent}>Úvod</a></li>
    <li><a n:href=":Blog:Default:default" {ifCurrent :Blog:default:default}class="current"{/ifCurrent}>Blog</a></li>
        {ifCurrent :Blog:*}
        <ul>
            <li><a n:href=":Blog:Autori:default">Autori</a></li>
            <li><a n:href=":Blog:Clanky:default">Najnovšie</a></li>
            <li><a n:href=":Blog:Clanky:oblubene">Najobľúbenejšie</a></li>
        </ul>
        {/ifCurrent}
</ul>
Čamo
Člen | 786
+
0
-

To mi vyhadzuje chybu: „Cannot load presenter ‚Blog‘, class ‚App\Presenters\BlogPresenter‘ was not found in ‚C:\Apache24\htdocs\myNetteCMS\app/presenters/BlogPresenter.php‘.“

<ul class="navig">
    <li><a n:href=":Default:default" {ifCurrent :Default:default}class="current"{/ifCurrent}>Úvod</a></li>
    <li><a n:href=":Blog:Default:default" {ifCurrent :Blog:default:default}class="current"{/ifCurrent}>Blog</a></li>
        {if $presenter->isLinkCurrent(':Blog:*')}
        <ul>
            <li><a n:href=":Blog:Autori:default">Autori</a></li>
            <li><a n:href=":Blog:Clanky:default">Najnovšie</a></li>
            <li><a n:href=":Blog:Clanky:oblubene">Najobľúbenejšie</a></li>
        </ul>
        {/if}