Как вы получаете пункты меню третьего уровня в Zotonic? - PullRequest
0 голосов
/ 21 октября 2010

Я хотел бы отобразить пункты меню третьего уровня в Zotonic.

Например, если у меня есть страницы в иерархии, подобные следующей:

  • О нас
    • Карьера
      • Зачем здесь работать?

Я хочу, чтобы Почему работа здесь? была доступнав выпадающих меню.

Как получить пункты меню третьего уровня в Zotonic?

1 Ответ

0 голосов
/ 21 октября 2010

Я использовал Page Connections и измененный шаблон меню. Для этого требуется Zotonic 0.5.0 или более поздняя версия.

  1. Создать Предикат с именем Menu из text в text
  2. Редактировать /modules/mod_menu/templates/_menu.tpl:

    Включите оригинальный шаблон меню:

    {% if menu %}
        <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>
    {% endif %}
    

    В версию меню третьего уровня:

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

    Путем добавления особого случая для подключения на странице меню элементов второго уровня:

              {% if depth == 2 %}
                  {% for submenu in m.rsc[mid].menu %}
                      {% if forloop.first %}<ul>{% endif %}
                      <li id="{{ id_prefix }}nav-item-{{nr}}" class="{% if is_first %}first {% endif %}{% if is_last %}last{% endif %}">
                          <a href="{{ m.rsc[submenu].page_url }}"
                             class="{{ m.rsc[submenu].name }}{% if submenu == id %} current{% else %}{% if submenu|member:path %} onpath{% endif %}{% endif %}">{{ m.rsc[submenu].short_title|default:m.rsc[submenu].title }}</a></li>
                      {% if forloop.last %}</ul>{% endif %}
                  {% endfor %}
              {% endif %}
    
  3. In Соединения страниц добавить * Меню * с на каждую страницу, которой требуются элементы третьего уровня в меню

...