2016-08-02 5 views
0

私は簡単な質問があります。子プラグインの制限数をdjango-cmsに定義することが可能かどうかを知りたいです。私のプラグインには子プラグインがありますが、子プラグインの数を最大2に制限したいのですが、cms_plugins.pyにいくつかの設定を追加することはできますか?フォームを追加して手作業で検証する必要はありませんか?django-cmsのネストされたプラグインの数を制限することはできますか?

私はsettings.pyにこれを追加しました:

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

しかし、私はまだ2つの以上のチャイルズを追加することができます。

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

マイプレースホルダは、モデルに属しています。

+0

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

+0

@mishbah私はあなたが見ることができます私の質問を更新しましたか? :) – patricia

答えて

0

現在、ネストされたプラグインのDjango CMSではこれを実行できません。

私は同様のものが必要でしたし、テンプレートを無効にすることですばやく回避することができました。 https://github.com/divio/django-cms/issues/5102#issuecomment-278303995

は、単にあなたのPluginクラスにmax_children = <number>を追加し、既存のDjango CMSのテンプレートを上書きするために、テンプレートフォルダtemplates/cms/toolbar/に新しいdragitem.htmlテンプレートを作成します。私は、Githubの上で同様の質問に対する反応を追加しました。以下のdiffを参照してください:

これは、子の最大数に達したときに+アイコンをうまく無効にしました。

--- 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> 
関連する問題