Výběr položek menu

Česká/Slovenská podpora pro CMS Made Simple
Post Reply
panther
Forum Members
Forum Members
Posts: 36
Joined: Thu Apr 22, 2010 9:01 pm

Výběr položek menu

Post by panther »

Ahoj,

potřeboval bych vybrat položky do menu a to tak, že ne všechny. Ideálně, což nejde (alespoň se mi nepovedlo), bych potřeboval zkombinovat start_element='' a items=''. Mám vybraných několik položek přes items, ale potřeboval bych i jejich potomky.

Struktura stránek je třeba následující:
- úvod
- o nás
- produkty
-  - produkt 1
-  - produkt 2
- služby
- - služba 1
- - služba 2
- kontakt

A v šabloně potřebuju tohle {menu items='produkty, sluzby'} (a k tomu jejich děti). Potomci mohou přibývat, nemůžu je proto specifikovat explicitně.

Druhá možnost (počet vybraných rodičů bude neměnný) je říci něco jako: {menu start_page='produkty' count=2}.


Jak tohle udělat? Samozřejmě, možnost je taky rozdělit stránky do sekcí, ale jednak jich je moc (skoro 200) a přibyl by název sekce do URL (mod_rewrite), což by nebylo žádoucí.



Děkuji za rady.
osxfil
Forum Members
Forum Members
Posts: 186
Joined: Wed Apr 01, 2009 6:03 pm

Re: Výběr položek menu

Post by osxfil »

Možná by bylo vhodnější použít pro výběr položek do menu atributy stránky (při editaci stránky na kartě Nastavení). Použij  např. atribut "menu" a pak v šabloně menu by to mohlo vypadat nějak takhle:

Code: Select all

{* CSS classes used in this template:
#menuwrapper - The id for the <div> that the menu is wrapped in. Sets the width, background etc. for the menu.
#primary-nav - The id for the <ul>
.menuparent - The class for each <li> that has children.
.menuactive - The class for each <li> that is active or is a parent (on any level) of a child that is active. *}
{if $count > 0}
<ul id="nav-secondary">
{foreach from=$nodelist item=node}
{if $node->depth > $node->prevdepth}
	{repeat string="<ul>" times=$node->depth-$node->prevdepth}
{elseif $node->depth < $node->prevdepth}
	{repeat string="</li></ul>" times=$node->prevdepth-$node->depth}
	</li>
{elseif $node->index > 0}</li>
{/if}

{if ($node->extra1 == 'menu')}

{if $node->parent == true or ($node->current == true and $node->haschildren == true)}
	<li class="menuactive menuparent"><a class="menuactive menuparent" {elseif $node->current == true}
	<li class="menuactive"><a class="menuactive" {elseif $node->haschildren == true}
	<li class="menuparent"><a class="menuparent" {else}
	<li><a {/if}
href="{$node->url}">{$node->menutext}</a>
{/if}
{/foreach}
	{repeat string="</li></ul>" times=$node->depth-1}</li>
	</ul>
{/if}
Důležitá je ta část kódu {if ($node->extra1 == 'menu'}...kód...{/if}. Já tenhle princip využívám o webu s archivem online vydání týdeníku EURO http://evydani.euro.cz, i když v jiné souvislosti. Tam je stránka Archiv, která se zobrazí v menu až v okamžiku, kdy je uživatel přihlášen, takže mám tu podmínku postavenou trochu jinak. Uděláš si svojí šablonu, ve které se vypíší pouze stránky, které mají v atributu stránky odpovídající hodnotu. That's all :)
jurkapavel
New Member
New Member
Posts: 3
Joined: Fri Jan 29, 2010 8:36 pm

Re: Výběr položek menu

Post by jurkapavel »

Napadá mě použít atribut includeprefix, kdy se zobrazí stránky s určitým prefixem, nebo pokud máš pevně daný počet parent stránek, tak použít více menu za sebou, například
{menu start_page='produkty'}
{menu start_page='sluzby'}
Post Reply

Return to “Czech/Slovak - Česky/Slovensky”