在Django CMS

时间:2016-04-04 09:52:40

标签: python django django-cms

我想将特定HTML中添加到Django CMS页面中的每个插件包装起来。所以,从模板开始

<body>
  {% block content %}{% endblock content %}
<body>

页面上的TextPlugin元素表示为

<p>Lorem ipsum</p>

<p>dolor sit amet</p>

实际呈现为如下所示的页面:

<body>
  <div class="wrapper"><p>Lorem ipsum</p></div>
  <div class="wrapper"><p>dolor sit amet</p></div>      
</body>

我查看了djangocms-cascade,但它似乎无法提供我正在寻找的内容,并且我的django-cms 3.2.1上的迁移失败。

1 个答案:

答案 0 :(得分:3)

看看django-cms的插件处理器。见http://docs.django-cms.org/en/3.2.2/how_to/custom_plugins.html#plugin-processors

在你的settings.py中:

CMS_PLUGIN_PROCESSORS = (
    'yourapp.cms_plugin_processors.wrap_plugin',
)

在yourapp.cms_plugin_processors.py中:

from django.template import Context, Template

def wrap_plugin(instance, placeholder, rendered_content, original_context):
    t = Template('<div class="wrapper">{{ content|safe }}</div>')
    c = Context({
        'content': rendered_content
    })
    return t.render(c)