Page 1 of 1

šiek tiek pagalbos su meniu templeitu.

Posted: Fri Oct 10, 2008 7:25 am
by Rkz
Turiu tree menu, kitame puslapyje jis veikia. Dabar noriu perkelti ant mūsų mylimo cmsms taigi reikia ir tą meniu kažkaip.
Pabandysiu kuo suprantamiau paaiškinti, bet jeigu kokios info truks pasakykite.
Jo veikimo principas toks:

Code: Select all

<ul  id="treemenu10" class="treeview">
   
<li>{1.1tėvas}
<ul> 
<li>{1.2 tėvas}
<ul>
<li><a href="?url">{1.2.3 vaikas}</a></li>
<li><a href="?url">{1.2.3 vaikas}</a></li>
<li><a href="?url">{1.2.3 vaikas}</a></li>
<li><a href="?url">{1.2.3 vaikas}</a></li>
</ul>
</li>
<li>{1.2 tėvas}
<ul>
<li><a href="?url">{vaikas}</a></li>
<li><a href="?url">{vaikas}</a></li>
</ul>
</li>
<li>{1.2 tėvas}
<ul>
<li><a href="?url">{vaikas}</a></li>
<li><a href="?url">{vaikas}</a></li>
</ul>
</li>
</ul></li>
</ul>
Realus modelis:

   
Įrankiai

pjūklai
dozuki
ryoba
kataha
vieliniai

galąstuvai
dirbtiniai
stovai

drožėjo įrankiai
drožtuvas Automach
rinkiniai

Žinoma mandžiau ir pats daryti templeitą, štai kas gavosi:

Code: Select all


<ul  id="treemenu" class="treeview">
{assign var="prevdepth" value="1"}
{foreach from=$nodelist item=node}
{assign var="prevdepth" value=$prevnode->depth}
{if ($node->depth <= $prevdepth)}
{if ($prevnode->haschildren == "1")}<li></li></ul></li> {* bugfix if subitems were not shown in menu *}
{else}
{if $node->depth < $prevdepth}
{assign var="act_depth" value=$prevdepth-$node->depth}</li>
{while (($act_depth > 0) and ($collapseopened > 0))}
</ul></li>
{assign var="act_depth" value=$act_depth-1}
{assign var="collapseopened" value=$collapseopened-1}
{/while}
{else}
</li>
{/if}
{/if}
{/if}

{if $node->type == 'separator'}
<li></li>
{else}
{if $node->current == true}
{else}
{/if}
{if $node->type != 'sectionheader'}
<li><a href="{$node->url}" style="cursor:hand;">{$node->menutext}</a>
{/if} 
{if $node->type == 'sectionheader'}
<li>{$node->menutext}
{/if}
{if $node->haschildren == '1'}<ul>{/if}
{/if}
{assign var="prevnode" value=$node}
{/foreach}

{if ($prevnode->haschildren == "1")}<li></li></ul></li> {* bugfix if subitems were not shown in menu *}
{else}
{if $prevnode->depth > 1}
{assign var="act_depth" value=$prevnode->depth-1}</li>
{while (($act_depth > 0) and ($collapseopened > 0))}
</ul></li>
{assign var="act_depth" value=$act_depth-1}
{assign var="collapseopened" value=$collapseopened-1}
{/while}
{else}
</li>
{/if}
{/if}

</ul>
{/if}
Čia gali būti perteklinio kodo. Strigau toje vietoje, kad neuždaro tėvo, tėvas yra section header paprastai. Tikiuosi galėsite kažkuo pagelbėti :)

Re: šiek tiek pagalbos su meniu templeitu.

Posted: Fri Oct 10, 2008 8:20 am
by Rkz
Na iš tikrųjų tai tūksta nedaug:
Man padaro taip:


Įrankiai

pjūklai

dozuki
ryoba
kataha
vieliniai

galąstuvai

dirbtiniai
stovai


drožėjo įrankiai

drožtuvas Automach
rinkiniai


Neuždaro tėvo su

Realiai tėvas su vaikais turi būti:
Įrankiai

pjūklai
dozuki
ryoba
kataha
vieliniai
Ir man ten reikia kad išvestų visus vaikus ir tik tada uždarytų tėvą. Iš principo viskas gerai, css sutvarkytas, kitką tvarko javascriptas.

Re: šiek tiek pagalbos su meniu templeitu.

Posted: Fri Oct 10, 2008 8:46 am
by Rkz
na aš paėmiau prieš tai buvusio kažkokio medžio šabloną ir pradėjau modifikuot pagal veikiančio source. Taigi taip daro pirmame poste nupastintas šablonas .

Re: šiek tiek pagalbos su meniu templeitu.

Posted: Fri Oct 10, 2008 9:26 am
by Rkz
na aš turiu veikiantį meniu su dynamicdrive.com simpletreemenu javascriptu. Jo privalumas tas, kad turi du papildomus mygtukus išskleisti/sutraukti. Todėl ir toliau norėčiau naudoti tą patį skriptą. Reikia man to kad šablonas generuotų meniu taip kad po to javascriptas galėtų jį valdyt. Na ir dabar trūksta tiek kiek aprašiau aukščiau..

Re: šiek tiek pagalbos su meniu templeitu.

Posted: Fri Oct 10, 2008 1:06 pm
by Rkz
Dėkui Karoliui, išsprendė mano problemą  :)

Re: šiek tiek pagalbos su meniu templeitu.

Posted: Wed Oct 15, 2008 4:43 pm
by Augustas
Siaip geriau nenaudoti Javascrip´iniu menu. Nes tada paieskos sistemoms (google, yahoo ir pan) yra daug sunkiau suindeksuoti tinklapi.