2010-09-29 80 views
0

我想寫我自己的菜單風格,但我寧願在模板中做它,而不是讓我自己的菜單scomp。如何從Zotonic模板訪問菜單模型?

我基本上希望能夠做一些事情,如:

{% if m.menu %} 
    <ul> 
    {% for top_level_id in m.menu %} 
    {% with m.rsc[top_level_id] as top_level %} 
     <li><a href="{{ top_level.page_url }}">{{ top_level.title }}</a> 
     {% if top_level.menu %} 
     <ul> 
     {% for mid_level_id in top_level.menu %} 
      {% with m.rsc[mid_level_id] as mid_level %} 
      <li><a href="{{ midlevel.page_url }}">{{ mid_level.title }}</a></li> 
      {% endwith %} 
     {% endfor %} 
     </ul> 
     {% endif %} 
     </li> 
    {% endwith %} 
    {% endfor %} 
    </ul> 
{% endif %} 

如何從一個Zotonic模板進入菜單模式?

回答

1

添加到我的上一個答案。標準_menu.tpl收到包含所有菜單項的列表。此列表是完整菜單的深度優先樹行程的結果。每一個菜單是

{MenuRscId, DepthOfMenu, NrInSubMenu, HasSubMenuFlag} 

當頂級菜單具有深度爲1,並在菜單的第一個菜單項紀錄的1

所有菜單項NR當前用戶不是允許看到被過濾掉。

默認模板的代碼:

<ul id="{{ id_prefix }}navigation" class="clearfix at-menu do_superfish"> 
{% for mid,depth,nr,has_sub in menu %} 
    {% if not mid %}{% if depth > 1 %}</ul></li>{% endif %} 
    {% else %} 
    {% if nr == 1 and not forloop.first %}<ul{% if mid|member:path %} class="onpath"{% endif %}>{% endif %} 
    <li id="{{ id_prefix }}nav-item-{{nr}}" 
     class="{% if is_first %}first {% endif %}{% if is_last %}last{% endif %}"> 
     <a href="{{ m.rsc[mid].page_url }}" 
      class="{{ m.rsc[mid].name }}{% if mid == id %} current{% else %}{% if mid|member:path %} onpath{% endif %}{% endif %}">{{ m.rsc[mid].short_title|default:m.rsc[mid].title }}</a> 
    {% if not has_sub %}</li>{% endif %} 
{% endif %} 
{% endfor %} 
{% if forloop.last %}{% include "_menu_extra.tpl" %}{% endif %} 
</ul> 
1

(即將發佈的)0.5版本和Zotonic的提示使用模板來顯示菜單。檢查mod_menu/templates/_menu.tpl

該模板由menu scomp調用。