Django CMS占位符:插件黑名单

时间:2016-01-27 18:11:09

标签: django django-cms

创建自定义插件后,它可用于网站上的每个placeholder。如果我希望它们只能在特定static_placeholder上使用并从其余部分中排除,该怎么办?

我知道documentation告诉我如何在每个占位符上手动包含每个插件,但不知道如何从中插入插件。目前可能吗?

我正在使用Django CMS 3.1.2

2 个答案:

答案 0 :(得分:1)

关于ojii答案的后续行动:

虽然目前正在批准合并(见#5412),但yakky描述的方法如下:

  

要实施黑名单,请在CMS_PLACEHOLDER_CONF[None]['excluded_plugins']列表

中添加要列入黑名单的插件

请参阅#4979

谢谢@yakky:)

编辑:从Issue #5412提取更多信息:

  

有时候全局配置会让事情变得更好/   简单

      @ojii提出了一个等级结构(增加   优先顺序)

     

CMS_PLACEHOLDER_CONF[None] (global)

     

CMS_PLACEHOLDER_CONF['template'](如果给出模板)

     

CMS_PLACEHOLDER_CONF['placeholder']

     

CMS_PLACEHOLDER_CONF['template placeholder'](如果给出模板)

编辑2 在Django CMS 3.4.0上尝试了这些新配置,它运行良好

CMS_PLACEHOLDER_CONF = {
    'About': {
        'excluded_plugins': ['CMSArticlePlugin', 'FormPlugin'],
    },
    'Contact': {
        'excluded_plugins': ['CMSArticlePlugin'],
    },
    'Editions': {
        'excluded_plugins': ['CMSArticlePlugin', 'FormPlugin'],
    },
    'Involved': {
        'excluded_plugins': ['CMSArticlePlugin', 'FormPlugin'],
    },
    'Gallery': {
        'excluded_plugins': ['CMSArticlePlugin', 'FormPlugin'],
    },
    'News': {
        'excluded_plugins': ['FormPlugin'],
    },
}

很棒,Django CMS团队!

答案 1 :(得分:0)

目前,您只能将插件列入白名单,而不是将其列入黑名单。这意味着,现在,您必须在所有其他占位符上指定所有插件的列表(自定义插件除外)(请注意,您可以使用模板作为键来选择模板中的所有占位符),并定义静态列表包含自定义插件的占位符。

django CMS Issue Tracker上提出这个问题可能也值得在未来的版本中找到更好的解决方案。