【发布时间】:2012-02-17 22:42:16
【问题描述】:
我想重定向我正在写的页面中的顶部菜单项,以指向他们的孩子(如果有的话)。例如。这个站点有一个顶层 About,下面有几个 CMS 页面。当用户点击 about 时,我想在顶级 about 菜单下显示第一个子页面。
我可以像下面那样做,但感觉不对。我知道我可以进行静态重定向,但我不想这样做,因为第一个孩子可能会改变(毕竟这是一个 CMS 系统),我不希望将数据输入 CMS 的人必须管理重定向。所以我更喜欢下面的配置重定向。
这是一个很常见的要求,有标准的方法吗?我想我可以用navigation modifier 来做这件事,所以接下来我可能会尝试这条路线。
<div style="display:none;">{% show_menu 0 1 1 %}</div>
<div id="topmenu">
<ul>
{% for child in children %}
<li>
{% if child.children %}
<a href="{{child.children.0.get_absolute_url}}">
{% else %}
<a href="{{child.get_absolute_url}}">
{% endif %}
{{ child.get_menu_title }}
</a>
</li>
{% endfor %}
</ul>
</div>
关于上述内容,我需要在其中包含 show_menu,否则我的自定义菜单中没有数据。有什么办法不需要这个吗?
我最不喜欢上述内容的是 /about/ 页面仍然处于活动状态。如果有人浏览那里,他们会得到一个空白页面,这不是世界上最糟糕的事情,但我宁愿这种情况不要发生。我想如果我写了一个导航扩展,也会有同样的缺点。我想如果该页面被点击,我需要一个编程重定向来重定向到第一个孩子。想法?我可能可以在模板逻辑中做到这一点,但这似乎很疯狂。
【问题讨论】:
-
您是否找到了使用导航修饰符的解决方案?从 django-cms 3.0 开始,除了我在下面提出的小技巧之外,似乎仍然没有好的解决方案......
-
@benzkji 不是真的,我们通常只是在顶级页面上设置重定向,我认为你的小技巧和任何解决方案一样好
-
好的。每次第一个孩子的 url 更改时,我的 hack 使您免于调整重定向值。根据具体情况,这可能是一个真正的好处。
标签: django django-cms