gpt4 book ai didi

django - RoutablePageMixin 和面包屑

转载 作者:行者123 更新时间:2023-12-05 03:09:45 24 4
gpt4 key购买 nike

如果您的所有页面都在树(父/子)中,那么像这样的标准 Wagtail 面包屑系统可以完美运行:

{% block main %}
{% if self.get_ancestors|length > 1 %}
<ul class="breadcrumb">
{% for page in self.get_ancestors %}
{% if page.is_root == False and page.url != '/' %}
<li><a href="{% pageurl page %}">{{ page.title }}</a></li>
{% endif %}
{% endfor %}
<li class="active">{{ self.title }}</li>
</ul>
{% endif %}
{% endblock main %}

但是如果你的一些子页面不是真正的子页面,而是使用 RoutablePageMixin,它就会失败。因为可路由页面实际上是父页面的不同实例,所以面包屑路径无法深入到可路由页面。

我想我可以在上下文中添加一些额外的信息来检测情况并对其进行特殊处理,但是所有 WT URL 方法都返回“父”页面(即实际实例)的 URL,除此之外不是可以在面包屑中使用的程序化“标题”。

要使面包屑系统对子页面和可路由页面同样有效,最好的方法是什么?

最佳答案

回答我自己的问题(感谢 Robert 的提示)。在模型的路由定义中,添加如下内容:

ctx['routed_title'] = 'Staff'

然后像这样修改上面的面包屑示例(检查上下文中是否存在新元素并附加到面包屑):

{% block main %}
{% if self.get_ancestors|length > 1 %}
<ul class="breadcrumb">
{% for page in self.get_ancestors %}
{% if page.is_root == False and page.url != '/' %}
<li><a href="{% pageurl page %}">{{ page.title }}</a></li>
{% endif %}
{% endfor %}
{# If this is a routable, add non-parent/child link from context #}
{% if routed_title %}
<li><a href="{% pageurl page %}">{{ page.title }}</a></li>
<li class="active">{{ routed_title }}</li>
{% else %}
<li class="active">{{ self.title }}</li>
{% endif %}
</ul>
{% endif %}
{% endblock main %}

关于django - RoutablePageMixin 和面包屑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41837955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com