2016-02-16 17 views
1

我想定義一個插件,它可以在多個位置接受子插件,允許用戶聲明位置(很像佔位符)。Django-cms定義嵌套插件的位置

考慮以下幾點:

plugins.py

from cms.plugin_base import CMSPluginBase 
from cms.plugin_pool import plugin_pool 
from cms.models.pluginmodel import CMSPlugin 
from django.utils.translation import ugettext_lazy as _ 
class Container_Md_4_4_4(CMSPluginBase): 
    model = CMSPlugin 
    render_template = "plugins/container_md_4_4_4.html" 
    cache = False 
    allow_children = True 
    name = _("Container Plugin, Md, 4-4-4") 
plugin_pool.register_plugin(Container_Md_4_4_4) 

插件/ container_md_4_4_4.html

{% load cms_tags %} 
<div class="col-md-4"> 
    <-- WANT CHILD PLUGIN TO OPTIONALLY GO HERE --> 
</div> 
<div class="col-md-4"> 
    {% for plugin in instance.child_plugin_instances %} 
     {% render_plugin plugin %} 
    {% endfor %} 
</div> 
<div class="col-md-4"> 
    <-- WANT CHILD PLUGIN TO OPTIONALLY GO HERE --> 
</div> 

所以在上面的模板,所有的孩子插件走在中心的div但我希望用戶能夠將子插件放在左側div或右側div。用戶可能會說,在左邊放置一個圖像插件,在中間放置另一個容器插件(如上面的這個插件),右邊放置文本插件 - 這樣可以實現複雜的嵌套佈局結構。

所以我想我正在尋找的是插件的'佔位符'的功能。

回答

0

你需要將你的插件嵌套2層深。首先有一個ContainerPlugin,它接受Column插件,它接受其他插件。示例見https://github.com/divio/djangocms-grid

+0

對不起,但該鏈接中的示例在哪裏? –

+0

以及整個應用程序是例子。具體的插件,請看https://github.com/divio/djangocms-grid/blob/master/djangocms_grid/cms_plugins.py – ojii