在 Django CMS 中单独包装每个插件
Wrap every plugin separately in Django CMS
我想将添加到我的 Django CMS 页面的每个插件包装在特定 HTML 中。所以,从模板开始
<body>
{% block content %}{% endblock content %}
<body>
页面上的 TextPlugin 元素呈现为 say
<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 上迁移失败。
查看 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)
我想将添加到我的 Django CMS 页面的每个插件包装在特定 HTML 中。所以,从模板开始
<body>
{% block content %}{% endblock content %}
<body>
页面上的 TextPlugin 元素呈现为 say
<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 上迁移失败。
查看 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)