Menu sjabloon naar Navigatie sjabloon, vervolg...

Nederlandse ondersteuning voor CMS Made Simple

Moderator: velden

Post Reply
hfdh
New Member
New Member
Posts: 4
Joined: Mon Nov 01, 2021 8:55 am

Menu sjabloon naar Navigatie sjabloon, vervolg...

Post by hfdh »

Als vervolgvraag op topic Menu sjabloon naar Navigatie sjabloon

viewtopic.php?p=328116&sid=c8799fa8b279 ... fcea5f3ff

Mijn doel is om de 5 "depth0" met li class in de TopNavBar te krijgen en dat ik ze via het CMS systeem kan gaan aanvullen met de lagere niveaus, zodat iedereen in principe de menustructuur kan aanpassen als er een pagina bijkomt (of weggaat).

Ik heb mijn menu omgeving in de tabel zoals voorgedaan in bovenstaande topic. Dit is logisch voor mij en gaat prima.

(Voor het geval mijn tabel niet duidelijk overkomt heb ik een afbeelding erbij gedaan.)

------------------------------------------------------|
| item | depth| li class |
--+-------+---------|--------------------------------|
1| A | 0 | icon solid fa-home |
2| B | 0 | icon solid fa-bug |
3| B1 | 1 | - |
4| B2 | 1 | - |
5| B3 | 1 | - |
6| B4 | 1 | - |
7| B5 | 1 | - |
8| B5a | 2 | - |
9| B5b | 2 | - |
10| C | 0 | icon far fa-lightbulb |
11| C1 | 1 | - |
12| C2 | 1 | - |
13| C3 | 1 | - |
14| C4 | 1 | - |
15| C5 | 1 | - |
16| D | 0 | icon solid fa-blog |
17| E | 0 | icon solid fa-at |
18| E1 | 1 | - |
19| E2 | 1 | - |
20| E3 | 1 | - |
21| E4 | 1 | - |
23| E4a | 2 | - |
24| E4b | 2 | - |
22| E5 | 1 | - |
------------------------------------------------------|

(geen ul class)
li class is nodig om het icoon in de template te tonen.

Nu dit verhaal omzetten naar de gewenste code ???

Code: Select all

{function name=Nav_menu depth=1}{strip}
<ul>
  {foreach $data as $node}
    {* setup classes for the anchor and list item *}
    {assign var='liclass' value='menudepth'|cat:$depth}
    {assign var='aclass' value=''}

    {* the first child gets a special class *}
    {if $node@first && $node@total > 1}{assign var='liclass' value=$liclass|cat:' first_child'}{/if}

    {* the last child gets a special class *}
    {if $node@last && $node@total > 1}{assign var='liclass' value=$liclass|cat:' last_child'}{/if}
etc.

Eerst wordt de functie aangeroepen en dat kun je zo laten, denk ik.
Dan staat er depth1 en dan raak ik al in de war. Depth waarover?
Liclass en aclass variabelen waar staan deze voor?

Als iemand me even op gang kan helpen, dan heel graag...
User avatar
velden
Dev Team Member
Dev Team Member
Posts: 3483
Joined: Mon Nov 28, 2011 9:29 am
Location: The Netherlands

Re: Menu sjabloon naar Navigatie sjabloon, vervolg...

Post by velden »

De depth variabele kun je gebruiken om te 'weten' hoe diep je in de structuur zit op dat moment.

De initiele aanroep (onderaan het template) geeft de waarde 0 mee.

Code: Select all

{Nav_pageshow data=$nodes depth=0}
Elke keer dat de functie recursief wordt aangeroepen wordt er 1 bij opgeteld:
{Nav_pageshow data=$node->children depth=$depth+1}

Dus je kunt in je template iets doen met de $depth. Bijvoorbeeld controleren of je in het hoofdmenu bent of een niveau dieper

Code: Select all

{if $depth == 0}{assign var='liclass' value='icon solid fa-'|cat:$node->extra1}{/if}
(Ik zou de favicon code 'home', 'bug' etc in het 'extra page attribute 1' veld van de pagina opgeven (Options tab))

liclass en aclass zijn voorbeelden waar je iets mee zou kunnen doen, maar kunt het ook weglaten.
{assign var='liclass' value='menudepth'|cat:$depth}
zal aan de variabele liclass de waarde menudepthX toekennen waarbij X dus de depth dus de waarde op dat moment van $depth is. Bijvoorbeeld:

Code: Select all

<li class="{$liclass}">....</li>
-->

Code: Select all

 <li class="menudepth2">....</li>
hfdh
New Member
New Member
Posts: 4
Joined: Mon Nov 01, 2021 8:55 am

Re: Menu sjabloon naar Navigatie sjabloon, vervolg...

Post by hfdh »

Voor mij is het nog steeds als Chinees, wel lekker maar ik snap er niks van.

Hoe moet ik starten als ik gewoon vijf items naast elkaar in de TopNavBar will hebben:
Bijvoorbeeld: Home - Probleem - Oplossing - Blog - Contact
met een icon ervoor:
'icon solid fa-home' - 'icon solid fa-bug' - 'icon far fa-lightbulb' - 'icon solid fa-blog' - 'icon solid fa-at'

Code: Select all

{if $depth == 0}{assign var='liclass' value='icon solid fa-'|cat:$node->extra1}{/if}
Bovenstaande regel lijkt mij te zeggen als depth gelijk aan 0 dan 'icon solid fa-' en dan moet nog ergens de variabelen "home - bug - lightbulb - blog en at" eraan worden toegevoegd als het menuitem wordt afgehandeld.

Begrijp ik goed dat je hiermee moet eindigen?

Code: Select all

{if isset($nodes)}
{Nav_menu data=$nodes depth=0}
{/if}
Als ik te veel tijd en aandacht vraag voor deze vragen dan moet je het gewoon eerlijk zeggen.
Alles is tot nu toe erg goed gegaan met CMS Made Simple, maar ik vind dit erg lastig.
User avatar
velden
Dev Team Member
Dev Team Member
Posts: 3483
Joined: Mon Nov 28, 2011 9:29 am
Location: The Netherlands

Re: Menu sjabloon naar Navigatie sjabloon, vervolg...

Post by velden »

velden wrote: Tue Nov 02, 2021 2:41 pm Begrijp ik goed dat je hiermee moet eindigen?
CODE: SELECT ALL

{if isset($nodes)}
{Nav_menu data=$nodes depth=0}
{/if}
Ja, het hele begin van het template is het definieren van de functie 'Nav_menu''.
Onderaan het template wordt die functie dan uiteindelijk aangeroepen met als startpunt het eerste niveau van je menustructuur.

De functie zorgt er dan zelf voor dat er, indien van toepassing, steeds dieper de menustructuur in wordt gedoken (recursie). Dat staat uitgelegd in het andere topic waar ik naar verwezen heb.
hfdh wrote: Tue Nov 02, 2021 3:43 pm CODE: SELECT ALL

{if $depth == 0}{assign var='liclass' value='icon solid fa-'|cat:$node->extra1}{/if}
Bovenstaande regel lijkt mij te zeggen als depth gelijk aan 0 dan 'icon solid fa-' en dan moet nog ergens de variabelen "home - bug - lightbulb - blog en at" eraan worden toegevoegd als het menuitem wordt afgehandeld.
Klopt, en die variabelen KAN je bijvoorbeeld per pagina opgeven op het 'Options' tab (waar je de pagina bewerkt). Die komen dan beschikbaar via $node->extra1

Over het algemeen kun je zaken voor jezelf inzichtelijker maken door
a. je template uit te kleden
b. de inhoud van variabelen op een pagina te tonen

Dus bijvoorbeeld binnen de foreach-loop zoiets als

Code: Select all

<pre>
Depth: {$depth}
{$node|print_r}
</pre>
Post Reply

Return to “Dutch - Nederlands”