2016-08-02 4 views
0

У меня вопрос простой. Я хочу знать, можно ли определить предельное число дочерних плагинов в django-cms. Мой плагин имеет дочерние плагины, но я хочу ограничить количество дочерних плагинов максимум до 2-х. Возможно ли это сделать, добавив некоторую конфигурацию в cms_plugins.py? Без необходимости добавлять форму и проверять ее вручную?Можно ли ограничить количество вложенных плагинов в django-cms?

Я добавил это settings.py:

CMS_PLACEHOLDER_CONF = { 
    'Ipp_Article_Sidebar': { 
     'plugins': ['ArticlesParentCMSPlugin', 'ArticlesChildCMSPlugin'], 
     'name': gettext("Right Side Content"), 
     'limits': { 
      'ArticlesParentCMSPlugin': 1, 
      'ArticlesChildCMSPlugin': 2 
     } 
    }, 
} 

Мой заполнителем относятся к модели:

sidebar = PlaceholderField('ipp_article_sidebar', 
          related_name='IPP_ARTICLE_SIDEBAR') 

Но я все еще могу добавить больше чем 2 Чайлдс.

+0

См http://docs.django-cms.org/en/develop/reference/configuration.html#cms-placeholder-conf – mishbah

+0

@mishbah Я обновил свой вопрос вы можете посмотреть? :) – patricia

ответ

0

В настоящее время это невозможно сделать в Django CMS для вложенных плагинов.

Мне нужно было что-то похожее и сделало быстрое обходное решение, переопределив шаблон. Я добавил реакцию на подобный вопрос на Github: https://github.com/divio/django-cms/issues/5102#issuecomment-278303995

Просто добавьте max_children = <number> к вашему Plugin класса и создать новый dragitem.html шаблон в папке шаблонов templates/cms/toolbar/ переопределить существующий шаблон Django CMS. См. Раздел ниже:

Это прекрасно отключает значок +, когда максимальное количество детей достигнуто.

--- env/lib/python3.5/site-packages/cms/templates/cms/toolbar/dragitem.html  2016-09-15 12:06:26.132803200 +0200 
+++ templates/cms/toolbar/dragitem.html 2017-02-08 12:26:59.343312100 +0100 
@@ -9,6 +9,17 @@ 
     {% if plugin.child_plugin_instances %} cms-dragitem-collapsable{% endif %}"> 
     {% language request.toolbar.toolbar_language %} 
     {% if not disabled_child %} 
+   {% with max_children=plugin.get_plugin_instance.1.max_children child_count=plugin.child_plugin_instances|length %} 
+    {% if max_children %} 
+     <div class="cms-submenu-btn cms-submenu-add cms-btn 
+      {% if child_count >= max_children %} cms-btn-disabled{% endif %}"> 
+      {% if child_count >= max_children %} 
+       <span class="cms-hover-tooltip" data-cms-tooltip="{% trans "You cannot add plugins to this plugin." %}"></span> 
+      {% else %} 
+       <span class="cms-hover-tooltip cms-hover-tooltip-left cms-hover-tooltip-delay" data-cms-tooltip="{% trans "Add plugin" %}"></span> 
+      {% endif %} 
+     </div> 
+    {% else %} 
      <div class="cms-submenu-btn cms-submenu-add cms-btn 
       {% if not allow_children %} cms-btn-disabled{% endif %}"> 
       {% if not allow_children %} 
@@ -17,6 +28,8 @@ 
       <span class="cms-hover-tooltip cms-hover-tooltip-left cms-hover-tooltip-delay" data-cms-tooltip="{% trans "Add plugin" %}"></span> 
       {% endif %} 
      </div> 
+    {% endif %} 
+   {% endwith %} 
      <div class="cms-submenu-btn cms-submenu-edit cms-btn" data-rel="edit"> 
       <span class="cms-hover-tooltip cms-hover-tooltip-left cms-hover-tooltip-delay" data-cms-tooltip="{% trans "Edit" %}"></span> 
      </div>