Jay Cee
Jay Cee

Reputation: 1965

Django CMS manage placeholder in template pages

I would enjoy your help on two points :

First, I am creating some default page's templates like : "Home.html, work-with-us.html" etc.

My aim is to simplify the work of people who will be in charge of the website. They don't have to learn how to manage plugin inside placeholder.

Thus, I created some placeholder like this , example for "workwithus.html" :

{% extends "base.html" %}
{% load cms_tags staticfiles sekizai_tags menu_tags %}
{% block content %}
<div class="container">

    <div class="col-xs-12">
        {% placeholder "image-full" %}
    </div>

    <div class="col-md-12">
        {% placeholder "text-platform" %}
    </div>
</div>
{% endblock content %}

And I managed the plugins this way :

CMS_PLACEHOLDER_CONF = {
'image-full': {
    'plugins': ['FilerImagePlugin'],
    'name': gettext("Image full page"),
    'default_plugins': [
        {
            'plugin_type': 'FilerImagePlugin',
            'values': {
            },
        },
    ],
    'limits': {
        'global': 1,
        'FilerImagePlugin': 1,
    },
},

etc

The problem is that, I can't use multiple time the same placeholder in the same template. It would be so nice if, when I make a placeholder "img-full-width" I could be able to call it several times. Do you have any idea about it ? A way to make it more proper than creating "img-full-2", "img-full-3" etc.

Second question : Is it possible to add more than one default_plugins ? It really annoy me...

Thank you very much in advance guys !

Upvotes: 2

Views: 832

Answers (1)

mishbah
mishbah

Reputation: 5597

You can have as many plugins as you like as default_plugins

See http://django-cms.readthedocs.org/en/support-3.0.x/reference/configuration.html#placeholder-default-plugins

You can specify the list of default plugins which will be automagically added when the placeholder will be created (or rendered).

If you are annoyed with having to redefine CMS_PLACEHOLDER_CONF for each placeholder, you can always define a common config before the CMS_PLACEHOLDER_CONF block:

img_fullwidth_conf = {
    'plugins': ['FilerImagePlugin', 'TextPlugin'],
    'name': gettext("Image full page"),
    'default_plugins': [
        {
            'plugin_type': 'FilerImagePlugin',
            'values': {
            },
        },
        {
            'plugin_type': 'TextPlugin',
            'values': {
                'body': '<p>Write here...</p>'
            },
        },
    ],
}

CMS_PLACEHOLDER_CONF = {
    'img-full-1': img_fullwidth_conf,
    'img-full-2': img_fullwidth_conf,
    'img-full-3': img_fullwidth_conf,

}

Upvotes: 2

Related Questions