如何在Django CMS中的静态占位符中添加插件

时间:2014-08-24 17:48:42

标签: python django django-cms

我开始在Django-CMS中使用静态占位符,我想引导节奏并创建一个“页脚”静态占位符。类似的东西:

static_placeholder = StaticPlaceholder(
    name=static_placeholder_code,
    code=static_placeholder_code,
    creation_method=StaticPlaceholder.CREATION_BY_CODE
)
static_placeholder.save()

我尝试使用api.add_plugin添加TextPlugin但出错了

add_plugin(
    placeholder=static_placeholder,
    plugin_type='TextPlugin',
    language='en',
)

由于static_placeholder不是Placeholder的实例,因此add_plugin不起作用。 在add_plugin函数中:assert isinstance(占位符,占位符)

将TextPlugin添加到此静态占位符的最佳方法是什么?

1 个答案:

答案 0 :(得分:3)

StaticPlaceholder是一个与Placeholder模型有两个外键关系的模型,一个称为draft,另一个称为public。两者都会给你一个Placeholder个实例。

你可以使用:

add_plugin(
    placeholder=static_placeholder.draft,
    plugin_type='TextPlugin',
    language='en',
)

它会起作用,但请记住,您应该始终使用draft作为上述示例,这是因为当您发布时,draft中的所有插件都将被复制到{{ 1}}占位符。

最后不确定你的应用程序的细节,但应该指出当staticplaholder在模板中呈现时,没有必要事先创建它。你可以这样做:

public

然后,这将获取或创建{% load cms_tags %} {% static_placeholder 'footer' %} 静态占位符。