2016-04-04 6 views
0

Ich möchte jedes Plug-in, das zu einer Seite in meinem Django CMS in bestimmten HTML hinzugefügt wird. Also, beginnend mit einer VorlageWickeln Sie jedes Plugin einzeln in Django CMS

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

Und TextPlugin Elemente auf der Seite, die machen so sagen

<p>Lorem ipsum</p> 

und

<p>dolor sit amet</p> 

tatsächlich als Seite zu machen, die wie folgt aussieht:

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

I habe einen Blick auf djangocms-cascade geschaut aber es scheint nicht genau das zu bieten was ich suche und die Migrationen scheitern auf meinem django-cms 3.2.1.

Antwort

3

Werfen Sie einen Blick auf Plugin-Prozessoren für django-cms. Siehe http://docs.django-cms.org/en/3.2.2/how_to/custom_plugins.html#plugin-processors

In Ihrem settings.py:

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

In Ihrem 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) 
Verwandte Themen