django-cms - 重用附加菜单并防止 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)
有没有办法获得附加菜单的导航节点?
解决方案
推荐阅读
- java - mkdirs() 不会在 android 中创建新目录
- javascript - 如何通过鼠标滚轮和滚动条支持重用固定数量的行来创建虚拟表?
- mysql - MYSQL 从不同服务器上的数据库连接表
- python - 尝试通过交替值组合列表时卡在扩展切片上
- android - android BaseFragment 与它自己的 xml 和继承片段的视图在父的 frameLayout
- javascript - 在 sequelize 中序列化 ARRAY 字段的更新
- aws-lambda - 如何在 Netlify lambda 函数之间共享代码
- python - 使用 python manage.py 创建超级用户在 Django 中自定义消息
- scons - 如何使用 SCons 选择构建架构
- javascript - 是否可以通过反应提供宁静的服务?