首页 > 解决方案 > 重用附加菜单并防止 Django-cms 中的选择问题

问题描述

我开发了一个导航栏,需要一种将菜单附加到某些页面的方法,但是如果我重用菜单并将其附加到多个页面上,那么如果选择了一个附加的导航节点,所有下拉菜单都会打开。

目前我正在过滤模板中的节点,所以我认为菜单决定了所有节点的选择,而不仅仅是显示的。

导航模板(第 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)

有没有办法获得附加菜单的导航节点?

标签: django-cms

解决方案


推荐阅读