Vytvoření menu v šabloně

Rudolf Svátek 2016-05-31 15:25

Tak šablona z minula ti už funguje. Tedy myšleno tak, že se neobjevují žádné chyby a vše je správně nakonfigurované. Dnes ti předvedu, jak vytvořit menu.

  1. Najdi v šabloně kus kódu, který představuje menu. Pokud správně koukám, je to tento kód:
    <ul class="sf-menu" id="example">
        <li><a href="index.html">Home</a></li>
        <li><a href="about.html">About</a></li>
        <li> <a href="works.html">Works </a> </li>
        <li class="current"> <a href="page.html">Pages </a>
            <ul>
                <li> <a href="#">consectetuer </a> </li>
                <li class="current"> <a href="#">Nunc dignissim risus id metus.</a>
                    <ul>
                        <li class="current"><a href="#">Cras ornare tristique elit</a></li>
                        <li><a href="#">Ut aliquam sollicitudin leo</a></li>
                        <li><a href="#">Cras iaculis ultricies nulla.</a></li>
                        <li><a href="#">Aliquam tincidunt </a></li>
                        <li><a href="#">vestibulum nulla nec ante</a></li>
                    </ul>
                </li>
                <li> <a href="#">Cras iaculis ultricies nulla</a></li>
                <li> <a href="#">Donec quis dui at</a></li>
            </ul>
        </li>
        <li> <a href="contact.html">Contact</a> </li>
    </ul>
    

    V zásadě je to nečíslovaný víceúrovňový seznam. RS::RS vybere všechny stránky, které jsou zařazené do nějakého menu a připraví je také jako víceúrovňový seznam. Jde tedy jen o to, vypsat tento strom správně do šablony.

  2. Vytvoř soubor s názvem topMenu.latte a ulož jej do složky h00042, kde tvoříš svou novou šablonu. Jeho obsah bude vypadat takto:

    <ul class="sf-menu" id="example">     
    	{block #menu}
    	{foreach $menuItems as $link}
    		<li>
    			{if count($link->children)}
    				<a href="{plink Pages:view $link->url}">{$link->menuTitle}</a>
    				<ul>
    					{include #menu, menuItems => $link->children}
    				</ul>
    			{else}
    				<a href="{plink Pages:view $link->url}">{$link->menuTitle}</a>
    			{/if}
    		</li>
    	{/foreach}
    	{/block}
    </ul> 
    
  3. V souboru @layout.latte nahraď kód z bodu 1 za makro {control topMenu}, takže kód bude vypadat takto:
    <div class="menu"> 
        <img src="{$basePath}/{$theme}/images/menu-left.png" alt="image"/>
        {control topMenu}
        <img src="{$basePath}/{$theme}/images/menu-right.png" alt="image"/>
    </div>

 

Když to trochu vysvětlím, tak se ti povedlo vytvořit šablonu horního menu pomocí rekurzivního vypisování položek menu. RS::RS ti dodalo proměnnou $menuItems a stačilo jí postupně projít a vytvořit stejný nečíslovaný víceúrovňový seznam, jako byl původně v šabloně vypsán natvrdo.

To makro {control topMenu} je příkaz šablonovacího systému Latte, které zařídí, že se šablona horního menu vypíše v šabloně stránek.

Kromě horního menu máš v RS::RS ještě 3 další menu. Každému můžeš připravit šablonu podobně jako pro topMenu a podobným makrem pak menu vypsat kdekoli bude potřeba. Takže jaká menu RS::RS zná:

  • topMenu - vykresluje horní menu. Šablona se jmenuje topMenu.latte a vypisuje se makrem {control topMenu}
  • footerMenu - vykresluje menu v patičce. Šablona se jmenuje footerMenu.latte a vypisuje se makrem {control footerMenu}
  • sideMenu - vykresluje postranní menu. Šablona se jmenuje sideMenu.latte a vypisuje se makrem {control sideMenu}
  • otherMenu - vykresluje ještě nějaké další menu. Šablona se jmenuje otherMenu.latte a vypisuje se makrem {control otherMenu}

Doufám, že 4 různá menu budou stačit na jakýkoli web.

Takže máme menu. Příště zkusíme vypsat obsah hlavní stránky.

 

Komentáře (0)

Přidej svůj komentář

O mně

Jmenuji se Rudolf Svátek. Jsem lektor výpočetní techniky a PHP programátor. Stavím firemní stránky a eshopy. Aby se mi to dělalo pohodlně, vytvořil jsem redakční systém RS::RS, který ti tu nabízím k použití.

Rychlý kontakt na mně

  • Rudolf Svátek
  • Telefon:
    +420 777 828 353
  • Email:
  • Adresa:
    Josefa Hory 1097/5
    736 01 Havířov
    ČR



Tyto stránky používají Cookies. Používáním stránek s tím souhlasíte Další informace