Jak efektivně vykreslit několik druhů menu?
- marrythenight
- Člen | 2
Ahoj,
jsem naprostý začátečník a narazila jsem na problém, který se týká
vykreslení 3 typů menu v projektu.
Na hlavní stránce @layout.latte mám definované jedno menu, kde
v odkazech je
<li>#services">Services</a></li>
<li>#contact">Contact</a></li>
protože se jedná o one-page stránku, kdy to uživatele dostane na danou sekci. Jenže text v té sekci je zkrácený a já tam mám odkaz pro kliknutí na více informací. No a na těch dalších stránkách bych už potřebovala právě menu, kde odkaz bude: <li><a href=„{$presenter->link(‚Info:service‘)}“>Services</a></li>
No a poslední problém je vykreslení menu v případě přihlášení do
svého profilu. Tam to menu má taky jiné už odkazy pro správu svého
profilu.
No doufám, že jsem to nějak srozumitelně napsala, ale opravdu si s tím
nevím rady. Nechci ten kód neustále kopírovat. Nelze udělat v
@layout.latte něco jako {if (dané presentry) } kod menu {/if} nebo to
musím dát do různých bloků a ty vkládat nebo includovat soubor pouze
s menu??
Neřešil někdo už taky něco podobného s vykreslením několika druhů
menu? Moc bych Vám byla vděčná za odpověď. :))
- Altimit
- Člen | 82
pokud myslíš, že chceš jiné odkazy v default home page a jiné na ostatních tak to máš nějak tak:
<ul class="menu">
<li>{ifCurrent :Front:Home:default}<a href="#Services">Services</a>{else}<a n:href=":Front:Info:service">Services</a>{/if}
</li>
a u uživatele to je takhle:
{if $user->loggedIn}
<li><a n:href=":Client:Home:default">Uživatel</a></li>
<li><a n:href=":Demofront:Sign:out">Odhlásit se</a></li>
{else}
<li><a n:href=":Demofront:Sign:up">Registrace</a></li>
<li><a n:href=":Demofront:Sign:in">Přihlášení</a></li>
{/if}
další věc můžeš si to udělat v zvlášť souboru např.
menu.latte
, který bude u @layout.latte
a v layoutu
budeš mít místo toho menu jenom toto:
{include 'menu.latte'}
a celé menu budeš dělat v menu.latte :)
- Landsman
- Člen | 152
Kód můžeš podmínkovat i na danný presenter / action / modul:
presenter:
$presenter = explode(":", $this->getName());
if(count($presenter) == 2)
{
$this->template->actionName = strtolower($presenter[1] . "_" . $this->getAction());
$this->template->moduleName = strtolower($presenter[0]);
}
else
{
$this->template->moduleName = null;
$this->template->actionName = null;
}
latte:
{if $actionName == "mojeAkce"}
...
{/if}
Těch způsobů je více.