我有一个使用 Django CMS 运行的 Django 应用程序。我正在尝试使一个特定的子菜单不可点击。
菜单是这样的:
item1|item2|item3
sub_item3
sub_item3
我想要的是除了“item3”菜单项之外的所有东西都是可点击的。
我怎样才能知道 item3 本身是一个 Django CMS 页面,就像它的每个子页面一样?
这背后的想法是防止用户在单击顶部的“item3”菜单项时看到一个空白页面。
我有一个使用 Django CMS 运行的 Django 应用程序。我正在尝试使一个特定的子菜单不可点击。
菜单是这样的:
item1|item2|item3
sub_item3
sub_item3
我想要的是除了“item3”菜单项之外的所有东西都是可点击的。
我怎样才能知道 item3 本身是一个 Django CMS 页面,就像它的每个子页面一样?
这背后的想法是防止用户在单击顶部的“item3”菜单项时看到一个空白页面。
以下是我如何做到这一点,以防止它链接到任何地方:
{% load cms_tags menu_tags %}
{% for child in children %}
<li>
{% if child.is_leaf_node %}<a href="{{ child.attr.redirect_url|default:child.get_absolute_url }}">{{ child.get_menu_title }}</a>{% else %}<a href="#">{{ child.get_menu_title }}</a>{% endif %}
{% if child.children %}
<ul>
{% show_menu 0 100 100 100 "menu/top-menu.html" "" "" child %}
</ul>
{% endif %}
</li>
{% endfor %}
在您的情况下,您可能想要一个带有类似这样的 css 的类,来自Disable a link using css
.active {
pointer-events: none;
cursor: default;
}
好的,我将前面的答案和这些链接https://groups.google.com/forum/?fromgroups=#!topic/django-cms/aS2Ew2mf8XY和文档https://django-cms.readthedocs .org/en/2.4.0/extending_cms/app_integration.html#how-it-works(导航修饰符)。
from menus.base import Modifier
from menus.menu_pool import menu_pool
class MyMode(Modifier):
"""
"""
def modify(self, request, nodes, namespace, root_id, post_cut, breadcrumb):
if post_cut:
return nodes
for node in nodes:
if node.title == u'Page not clickable':
node.no_click = True
return nodes
menu_pool.register_modifier(MyMode)
有了这个模板
% load cms_tags menu_tags %}
{% for child in children %}
<li>
{% if not child.no_click %}<a href="{{ child.attr.redirect_url|default:child.get_absolute_url }}">{{ child.get_menu_title }}</a>{% else %}<a href="#">{{ child.get_menu_title }}</a>{% endif %}
{% if child.children %}
<ul>
{% show_menu from_level to_level extra_inactive extra_active template "" "" child %}
</ul>
{% endif %}
</li>
{% endfor %}
在我的主模板(base.html)中,我添加了菜单
{% show_menu 0 100 100 100 "menu.html" %}