Django CMS 页面属性回退到其他值吗?

4 投票
1 回答
697 浏览
提问于 2025-04-18 06:32

我现在正在编辑一个基础模板,这个模板是我所有Django-CMS模板的基础。我想做的是打印出page_title这个属性,如果这个属性没有设置,就打印{{ block.super }}

我现在的代码是这样的:

{% block title %}
    {% page_attribute "page_title" as cms_title %}

    {% if cms_title and cms_title.strip %}
        {{ cms_title }}
    {% else %}
        {{ block.super }}
    {% endif %}
{% endblock %}

现在,当页面标题属性被设置时,这个功能是正常的。但是,当页面标题留空时,页面的标题属性会被用上,这让我有点意外。

这是正常的行为吗?如果是的话,我该怎么解决这个问题?或者有没有其他方法可以得到我想要的结果?

我使用的是Django-CMS 3.0

编辑

有人告诉我这是正常的行为,但没有提供解决方法。对我来说,比较page_titletitle属性是一个不错的解决方案。如果它们相等,说明title可能被用作备用,这样我就可以假设page_title没有被设置。

如果有人有更好的建议,欢迎回复哦 :)

1 个回答

0

我刚试了一下,你可以像这样有条件地覆盖这个代码块;

{% extends 'base.html' %}

{% load i18n cms_tags %}
{% page_attribute "page_title" as cms_title %}

{% if cms_title %}
    {% block title %}
        {{ cms_title }}
    {% endblock %}
{% endif %}

撰写回答