【问题标题】:Django CMS Placeholder: Plugin BlacklistDjango CMS 占位符:插件黑名单
【发布时间】:2016-05-04 20:25:41
【问题描述】:

创建自定义插件后,网站上的每个placeholder 都可以使用它。如果我希望它们仅在特定的 static_placeholder 上可用并被排除在其余部分之外怎么办?

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

我正在开发 Django CMS 3.1.2

【问题讨论】:

    标签: django django-cms


    【解决方案1】:

    ojii 回答的后续:

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

    要实现黑名单,在CMS_PLACEHOLDER_CONF[None]['excluded_plugins']列表中添加要加入黑名单的插件

    #4979

    谢谢@yakky :)

    编辑:更多信息来自Issue #5412

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

    @ojii 建议了一个 for 级别结构,例如(在增加 优先顺序)

    CMS_PLACEHOLDER_CONF[None] (global)

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

    CMS_PLACEHOLDER_CONF['placeholder']

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

    EDIT 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 团队!

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      猜你喜欢
      • 2012-10-10
      • 2015-09-09
      • 2017-09-26
      • 2017-12-24
      • 2013-10-08
      • 2012-11-02
      • 2013-08-25
      • 2019-08-17
      • 2015-05-20
      相关资源
      最近更新 更多