从祖先继承的 Django CMS 模板不识别占位符

Django CMS template inheriting from ancestor not recognizing placeholder

我正在使用 Django CMS 3.0.13。我有一个连接到 App Hook 的页面,它从最近的祖先那里继承了它的模板。

祖先模板未连接到 App Hook,并有一个占位符:

{# ancestor template #}
{% block content %}
    {% placeholder 'content' %}
{% endblock %}

App Hook 页面之前覆盖了此块以隐藏内容占位符。现在,我需要启用这个占位符,所以我删除了覆盖并收到:

"content" placeholder not found in an apphook application. Please use a static placeholder instead.

我试过:

所有这些都会导致相同的错误。我发现唯一可以解决此问题的方法是将 App Hook 页面的特定页面添加到 CMS_TEMPLATES

这不太理想。我该怎么做才能解决这个问题?

必须在直接绑定到 CMS 页面的页面上使用 placeholder 标记。如果您的模板是通过 django 应用程序呈现的,则需要使用 static_placeholder.

A static_placeholder 也可用于在模板之间重复使用相同的内容,例如页脚。

有关静态占位符在 CMS 页面中而非外部应用程序中的使用的文档; http://django-cms.readthedocs.org/en/latest/how_to/templates.html#static-placeholder

此外,如果您还没有研究过这个,请查看有关应用中占位符的文档。 http://django-cms.readthedocs.org/en/latest/how_to/placeholders.html

在您的应用程序中使用 PlaceholderField 可以产生一些很酷的应用程序挂钩,这些挂钩可以占用您所有的 CMS 插件。具体来说,我制作了一个新闻应用程序,允许您通过工具栏 add/edit 内容,然后为所有对象提供一个 ListView 页面,在相应的 DetailView 中呈现占位符字段].