Повторное использование вложенного меню и предотвращение проблем с выделением в Django-cms - PullRequest
0 голосов
/ 18 февраля 2019

Я разработал панель навигации и мне нужен был способ прикрепить меню к некоторым страницам, но если я повторно использую меню и прикрепляю его на нескольких страницах, все раскрывающиеся списки открываются, если выбран один из подключенных узлов навигации.

В настоящее время я фильтрую узлы в шаблоне, поэтому я думаю, что меню определяет выбор по всем узлам, а не только по показанным.

Шаблон навигации (строка 219 - 237)

<div class="ci-evo-select">
    <div class="hover h-100 w-100 pos-rel">
        <a class="h-100 w-100" href="{{ child.get_absolute_url }}">
            <span class="p-5vh-lr">{{ child.title }}{% if show_id %}{{ child.id }}{% endif %}</span>
        </a>
        <div class="dropdown w-100 pos-abs pos-bot-left ci-evo-weiß text-evo-block {% if child.selected %}show{% endif %}">
            {% for drop in child.children %}
                {% if drop.get_absolute_url == child.get_absolute_url %}
                    {# no child nodes #}
                    <div class="ci-evo-select hover">
                        <a class="w-100" href="{{ child.get_absolute_url }}#{{ drop.attr.identifier }}">
                            <span >{{ drop.title }}</span>
                        </a>
                    </div>
                {% endif %}
            {% endfor %}
        </div>
    </div>
</div>

cms_menus.py (завершено)

from menus.menu_pool import menu_pool
from menus.base import NavigationNode
from django.utils.translation import ugettext_lazy as _
from cms.menu_bases import CMSAttachMenu
from . import models


class AnchorAttachMenu(CMSAttachMenu):
    name = _("AttachMenu")

    def get_nodes(self, request):
        nodes = [
            # static nodes goes here
        ]
        anchors = models.AnchorHookModel.objects.all()
        for anchor in anchors:
            n = NavigationNode(anchor.name, anchor.page.get_absolute_url(), anchor.parent.pk)
            n.attr["identifier"] = anchor.identifier
            n.selected = False
            nodes.append(n)

        return nodes


menu_pool.register_menu(AnchorAttachMenu)

есть ли способ получить узел навигации, к которому привязано меню?

...