DjangoCMS:如何在占位符中自动添加默认插件

时间:2015-01-24 11:33:00

标签: python django django-cms

我的DjangoCMS模板中有一些占位符(例如,标题,标题和页脚)。我想使用默认项自动填充任何新创建的页面:带有页眉插件的页眉占位符和带页脚插件的页脚占位符。

怎么做?

3 个答案:

答案 0 :(得分:3)

这可以使用CMS_PLACEHOLDER_CONF设置完成,具体来说,default_plugins选项:

CMS_PLACEHOLDER_CONF = {
    'footer': {
        'name': "Footer",
        'default_plugins':[
            {
                'plugin_type':'FooterPlugin',
                'values':{
                    'body':'<p>This is the footer</p>'
                },
            },
        ]
    },
}

这假设您的FooterPlugin有一个允许HTML内容的字段body

答案 1 :(得分:0)

还有一个提示:静态占位符对此有用。

答案 2 :(得分:0)

这是对上面的Adam Venturella(关于带有外键的插件)问题的回答,因为我只需要解决相同的问题……总比没有好(也许)要晚了

在深入研究源代码之后,我发现有一个钩子可以在添加名为CMSPlugin的默认插件后添加到notify_on_autoadd中。它的签名是notify_on_autoadd(self, request, conf),其中conf是包含plugin_typevalues等的字典,因此我添加了我想要的其他外键作为新键在那里(它在values键中不起作用,因为它是作为字段值逐字传递来构成CMSPlugin的,但是您可以将其添加到ok中)…然后在{{1 }}我只是从此notify_on_autoadd开始像往常一样输入新条目。

下面是一个例子,使它更加清楚:

conf

然后,您只需将类似此代码段的内容添加到class Story(CMSPlugin): title = models.CharField(max_length=32) def notify_on_autoadd(self, request, conf): new_line_values = conf.get('new_line_values', []) for vals in new_line_values: line = Line( fmt=vals.get('fmt', '') text=vals.get('text', ''), story=self ) line.save() def __str__(self): return self.title class Line(models.Model): fmt = models.CharField(max_length=8) text = models.TextField() story = models.ForeignKey(Story, related_name='story') def __str__(self): return self.heading 中即可。

CMS_PLACEHOLDER_CONF

无论如何,我希望这对寻找相同事物的人有所帮助(我想亚当·冯特拉现在已经走了)