我正在使用show_placeholder
在我的网站上显示“全局”内容。例如,我在侧边栏中使用的Widget。我做了类似于this other question中给出的建议。我在管理员中创建了一个模板extra_placeholders.html
和一个页面(带有返回ID“extra-placeholders”),使用extra_placeholders.html
来存储占位符。它永远不会显示在前端,但我可以使用{% show_placeholder "my_placeholder" "extra-placeholders" %}
我需要解决的一个警告很好。假设我使用Django-CMS的前端“版本模式”来编辑占位符。它的工作原理是我可以修改内容并保存它。
但是,不会自动发布。
我理解原因。占位符实际上属于另一个页面(“extra-placeholders”)。因此,当我点击前端的“发布”时,我会保存我看到的页面,但不保存通过my_placeholder
关联的页面。
因此,我希望每次保存任何其他页面时都使用信号来保存“额外占位符”页面。我发现有this signal但是如何使用它来发布我的占位符页面?
答案 0 :(得分:1)
您实际上想要将信号连接到CMSPlugin
,而不是Page
。
这样的事情(未经测试!)可能有效:
def signal_handler(instance, **kwargs):
if not isinstance(instance, CMSPlugin):
return
page = Page.objects.get(reverse_id='extra-placeholders', publisher_is_draft = True)
if page.placeholders.filter(pk=instance.placeholder_id).exists():
page.publish()
post_save.connect(signal_handler)