Latte makro a rozmistění menu

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

Dobrý večr, opět se obracím s prosbou o radu, jelikož jsem ve vláknech toho moc nenašel. Řeším načítaní menu do tabulky a chtěl bych načítat zvlašť sudá a zvlášť lichá data z DB (s neurčitým počem), aby byly ve dvou sloupcích vedle sebe. Uvažoval jsem nad použitím latte maker, ale nedaří se mi přijít jak na to. Nevím zda to tímto zpsobem jde. Vypisuje se mi celé menu v obou sloupcích.

{block pravemenu}
    {if count($menuhlavni) > 0}

        {foreach $menuhlavni as $hlavni}
        {if $iterator->first}<table>{/if}
        {if $iterator->first}<tr>{/if}

        {if $iterator->odd}<td>{/if}
            <a n:href="Homepage:clanky 'zobraz' => $hlavni->idnav">{$hlavni->nazev}</a></td>
        {if $iterator->last}</td>{/if}

        {if $iterator->even}<td>{/if}
            <a n:href="Homepage:clanky 'zobraz' => $hlavni->idnav">{$hlavni->nazev}</a></td>
        {if $iterator->last}</td>{/if}

        {if $iterator->last}</tr>{/if}
        {if $iterator->last}</table>{/if}

        {/foreach}
    {else}
        <p>V tomto menu nejsou žádné odkazy</p>
    {/if}
{/block}

Ještě jsem uvažoval nad požitím wrappers, ale toto se zřejmě používá spíš jen u formulářů. Děkuji za každou radu.

Bazylek
Člen | 22
+
0
-

Ještě jednou jsem si prostudoval makra a vyřešil jsem to tímto způsobem. Snad jsem to dobře pochopil.

{block pravemenu}
    {if count($menuhlavni) > 0}

        {foreach $menuhlavni as $hlavni}
            <a class="hlavni{$iterator->odd}" n:href="Homepage:clanky 'zobraz' => $hlavni->idnav">{$hlavni->nazev}</a></td>
        {/foreach}
    {else}
        <p>V tomto menu nejsou žádné odkazy</p>
    {/if}
{/block}

Generuje mi to tento kod pro:

 <div class="menu-hlista-pravah">
	<a class="hlavni1" href=".../odkaz=7">Kdo jsme</a></td>
        <a class="hlavni" href=".../odkaz=8">Co nabizíme</a></td>
        <a class="hlavni1" href=".../odkaz=9">Kontakt</a></td>
        <a class="hlavni" href=".../odkaz=10">Tipy a rad</a></td>
        <a class="hlavni1" href="../odkaz=11">Napsali o nás</a></td>
        <a class="hlavni" href="../odkaz=12">Partneři</a></td>
        <a class="hlavni1" href=".../odkaz=13">Forum</a></td>
        <a class="hlavni" href=".../odkaz=14">Archív</a></td>
</div>

Pak už stačilo jenom v css nadefinovat ptřebné poziciování
a.hlavni {

}

a.hlavni1 {

}

Omlouvám se za ukvapený dotaz. Snad to někomu pomůže.

_Martin_
Generous Backer | 679
+
0
-

Ještě o kousek hezčí by bylo nezneužívat přetypování a učesat podmínku:

{block #pravemenu}
	{foreach $menuhlavni as $polozka}
		<a n:class="hlavni, $iterator->odd ? odd : even" n:href="Homepage:clanky, zobraz => $polozka->idnav">{$polozka->nazev}</a>
	{/foreach}
	<p n:if="!count($menuhlavni)">V tomto menu nejsou žádné odkazy</p>
{/block}

Jo, a asi ti tam utekla nějaká osamostatněná buňka </td>.

Tomas Jancik
Člen | 103
+
0
-

k samotnemu CSS bych jeste doporucil prejmenovani class na even a odd aby to davalo vetsi smysl…
pripadne pouziti CSS3 a nth-child

22
Člen | 1478
+
0
-

opravdu dobrá rada s tím CSS3 vzhledem k podpoře http://www.quirksmode.org/…ontents.html