在Django CMS中使菜单项无法点击

时间:2013-05-03 14:57:46

标签: python-2.7 django-cms django-1.4

我有一个使用Django CMS运行的Django应用程序。 我试图让一个特定的子菜单不可点击。

菜单是这样的:

item1|item2|item3
            sub_item3
            sub_item3

我想要的是除了“item3”菜单项外,一切都是可点击的。

我如何实现这一点知道item3是一个Django CMS页面本身和每个子页面一样?

这背后的想法是防止用户在点击顶部的“item3”菜单项时看到空白页面。

2 个答案:

答案 0 :(得分:2)

我是这样做的,以防止它在任何地方链接:

{% 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 %}

在你的情况下,你可能想要一个来自Disable a link using css

的类似css的课程
.active {
   pointer-events: none;
   cursor: default;
}

答案 1 :(得分:2)

好的我修复了上一个答案和这些链接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" %}