我正在使用Django CMS 3.0.13。我有一个连接到App Hook的页面,它从最近的祖先继承了它的模板。
祖先模板未连接到App Hook,并且有一个占位符:
{# ancestor template #}
{% block content %}
{% placeholder 'content' %}
{% endblock %}
App Hook页面之前已覆盖此块以隐藏内容占位符。现在,我需要启用此占位符,因此我删除了覆盖,并接受了:
在apphook应用程序中找不到“content”占位符。请改用静态占位符。
我试过了:
重新添加覆盖并更改占位符的名称:
{% block content %}
{% placeholder 'new_content' %}
{% endblock %}
保留继承相同并调用super:
{% block content %}
{{ block.super }}
{% endblock %}
删除页面,重新添加,设置应用程序挂钩和发布。
所有这些导致相同的错误。我发现解决此问题的唯一方法是将App Hook的页面添加到CMS_TEMPLATES
。
这不太理想。我该怎么做才能解决这个问题?
答案 0 :(得分:1)
必须在直接绑定到CMS页面的页面上使用placeholder
标记。如果您的模板是通过django应用呈现的,则需要使用static_placeholder
。
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插件。具体来说,我创建了一个新闻应用程序,其中包含允许您通过工具栏添加/编辑内容的应用程序,然后为所有对象提供ListView
页面,这些对象将呈现相应{{1}中的占位符字段}。