Django-cms显示菜单:如何在当前页面下显示菜单?

时间:2013-10-10 13:09:38

标签: python django django-cms

我对django-cms的show_menu标签感到困惑。有四个参数,但没有找到关于这些参数的完整文档。只有几个exmaples但我找不到如何只在当前页面下显示菜单。

页面排列如下:

--Projects
----proj1
----proj2
--Gallery
----gal1
----gal2

Projects模板中,如何设置show_menu的参数以仅显示当前页面下的菜单?

更新

@Brandon

我试过这个:

{% show_sub_menu 1 "menu/cust_menu.html" %}

正如文件所说的那样。但是它最终出现在这个错误中:

u'menu/cust_menu.html' could not be converted to Integer

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

文档中实际上有一个错误,它似乎也是django cms的最新版本中引入的一个小错误(计划在django-cms 3.0版本中解决!)。

https://github.com/divio/django-cms/issues/1913

我用这个解决了:

{% show_menu_below_id "topics_page" 0 4 100 100 "./_menus/menu_topics.html" %}

其中“topics_page”是反向ID(您在cms admin的高级部分配置它)。

对于菜单的递归渲染,只需配置要显示下一级菜单的子页面的自定义ID;

在自定义菜单模板中,您可以使用子属性和for循环计数器。下面,查看一个讨厌的示例,但如果您想自定义菜单模板仍然有用:

{% load menu_tags %}
{% load template_extras %}

{% for child in children %}
    {#    sub voices topics   #}

    {% if child.level == 1 %}
        {% if not forloop.counter|divisibleby:2 %}
            <div class="row-fluid">
        {% endif %}
    <div class="span6">
        <div class="sub1">
            <a href="{{ child.attr.redirect_url|default:child.get_absolute_url }}"><span
                    class="icon-play"></span>{{ child.get_menu_title|capfirst }}</a>
        </div>
        {% if child.children %}
            {% show_menu_below_id child.attr.reverse_id 0 4 100 100 template %}
        {% endif %}
    </div>
    {% if forloop.counter|divisibleby:2 %}
        </div> <!-- end row fluid -->
    {% endif %}


    {% elif child.level == 2 %}
        {#        2 - {{ child.attr.reverse_id}} - {{ child.get_menu_title }}#}
        <div class="row-fluid">
            <div class="span11 offset1">
                <div class="sub2">
                    <a href="{{ child.attr.redirect_url|default:child.get_absolute_url }}">{{ child.get_menu_title|capfirst }}
                    </a></div>
            </div>
        </div>
        {% if child.children %}
            {% show_menu_below_id child.attr.reverse_id 0 4 100 100 template %}
        {% endif %}
    {% elif child.level == 3 %}
        {#    leaf node topics   #}
        {#        3 - {{ child.attr.reverse_id}} - {{ child.get_menu_title }}#}
        <div class="row-fluid">
            <div class="span10 offset2">
                <div class="sub3"><a href="{{ child.attr.redirect_url|default:child.get_absolute_url }}">
                    <i class="icon-list-alt"></i> &nbsp;{{ child.get_menu_title|capfirst }}</a></div>
            </div>
        </div>
    {% endif %}
{% endfor %}