Signály a helper ifCurrent
- aGr
- Člen | 45
Ahoj,
mám na hlavní stránce jednoduché menu, které filtruje položky:
<ul>
<li{ifCurrent filter! today} class="active">{/ifCurrent}><a n:href="filter! today">Dnešní</a></li>
<li{ifCurrent filter! tomorrow} class="active">{/ifCurrent}><a n:href="filter! tomorrow">Zítřejší</a></li>
<li{ifCurrent filter! done} class="active">{/ifCurrent}><a n:href="filter! done">Hotové</a></li>
<li{ifCurrent filter! new} class="active">{/ifCurrent}><a n:href="filter! new">Nové</a></li>
</ul>
Při vstupu na hlavní stránce chci, aby bylo filtrováno podle první
položky (tedy „Dnešní“). V HomepagePresenter
tedy mám
protected function startup() {
parent::startup();
if (!$this->filter)
handleFilter('today');
}
V handleFilter()
samozřejmě ukládám název filtru do
$this->filter.
Problém je s ifCurrent. Při vstupu na HP je zapnut filtr „Dnešní“,
ale daná položka <li>
není aktivní. Při kliknutí na
filtr je samozřejmě vše v pořádku, neboť signál je v URL.
Poradíte jak docílit, aby i na hlavní stránce bez kliknutí byla první položka zvýrazněna (tj. <li> bude mít třídu .active)?
- bojovyletoun
- Člen | 667
Hádám, že máš problém, kdy na daném řádku se testuje poslední vytvořený odkaz, což bude odkaz z předeělého řádku.
Viz zde https://forum.nette.org/…tart-diskuze#…
Hint -místo makroformy {ifLinkCurrent} můžeš použít nformu:
n:class=„$presenter->linkCurrent()“ (problém to ale neřeší)
PS: bylo by technicky možné v Latte zařídit, aby ono makro kontrolovalo ty odkazy, jako je tady zamýšleno? tedy nějak analyzovat obsah vnitřích uzlů <li>, najít n:href ?