我的DjangoCMS模板中有一些占位符(例如,标题,标题和页脚)。我想使用默认项自动填充任何新创建的页面:带有页眉插件的页眉占位符和带页脚插件的页脚占位符。
怎么做?
答案 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_type
,values
等的字典,因此我添加了我想要的其他外键作为新键在那里(它在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
无论如何,我希望这对寻找相同事物的人有所帮助(我想亚当·冯特拉现在已经走了)