1

プレースホルダーコンテンツの存在を確認して次のトリックを作成するにはどうすればよいですか?:

{% if placeholder 'Head_text' %} <--check here
   <div class="in">
      ...
         ...
             <h2 class="title">{% placeholder 'Head_text' %}</h2>
         ...
      ...
   </div>
{% endif %}

知りたいのですが、プレースホルダーには、特別なHTML構造をレンダリングする前に、いくつかのコンテンツがありますか。

ありがとう。

4

2 に答える 2

0

私は以前にこの問題を抱えていましたが、調査したところ(これは変更された可能性があります)、これを行う方法が組み込まれていないため、プレースホルダーを変数に読み込むために独自のテンプレートタグを作成する必要があります。

django-cmsメーリングリストに関するいくつかの議論は次のとおりです。

于 2012-12-13T15:30:00.303 に答える
0

私はこれに対する解決策を探していましたが、プレースホルダーが存在するかどうかを確認する代わりに、いくつかの選択肢を見つけました。基本的には、余分なhtmlを追加する代わりに別のプラグインを使用するという考え方です。pipでインストールできるパッケージがいくつかあります。今、それらを試した後、私はそれを自分でやっただけで、パッケージを使用するよりもはるかに簡単でした

  1. cmsplugin-text-wrapper:既存のdjango-cmsのデフォルトのテキストプラグインに統合され、エディターは保持されますが、上部にセレクターが追加されるため、を選択できますwrapper。にwrapperは、追加する追加のhtmlが含まれています。また、クラスを追加するための優れたCSSシステムもあります。欠点としては、追加のテンプレートセレクターを使用して、編集者の生活をより困難にしたくありませんでした。

  2. cmsplugin-text-ng:これは基本的に新しいプラグインを追加します。プラグインをプレースホルダーに追加すると、使用可能なテンプレート(追加のHTMLを含む)を含むセレクターが表示されます。私が本当に気に入っているのは、カスタマイズしたHTMLで使用できるフィールドを追加できることです。たとえば、プラグインに追加のテキストフィールドを表示するようにタイトルを追加できます。欠点は、テンプレートがadmin!を介してデータベースに保存されることです。これはデータベースへの追加のヒットであり、単純すぎるもののためにそれを犠牲にしたくはありません。

  3. 既存のテキストモデルを使用して独自のプラグインを実行します。4つの非常に簡単なステップ:

    3.1基本的にこれをあなたのcms_plugins.py:に追加します

    from cms.plugin_pool import plugin_pool
    from cms.plugins.text.models import Text
    from cms.plugins.text.cms_plugins import TextPlugin
    
    class WidgetPlugin(TextPlugin):
        model = Text
        name = _("Widget")
        render_template = "widget.html"
    
        def render(self, context, instance, placeholder):
            context['instance'] = instance
            return context
    
    plugin_pool.register_plugin(WidgetPlugin)
    

    3.2フォルダにwidget.htmlテンプレートを作成します。templates

    <div class="in">
       ...
          ...
              {{ instance.body|safe }}
          ...
       ...
    </div>
    

    3.3プレースホルダーを好きな場所に配置します。

     {% placeholder 'Head_text' %}
    

    3.4ユーザーに新しいプラグインを使用させ、Head_text構成プラグインをsettings.py:に追加します。

    CMS_PLACEHOLDER_CONF = {
        #...
        'Head_text': {
            'plugins': {'WidgetPlugin'}
        },
    }
    
于 2014-01-20T02:07:56.320 に答える