0

ifブロックを作成して、自分のSidemenuの1つをWagtailCMS SITE_IDに基づいて表示するにはどうすればよいですか? Django WagtailCMSに基づく表示SITE_ID

はこれを試みたが、これはページテンプレートであると仮定すると、

{% if settings.SITE_ID == 1 %} 
    {% include 'includes/_home-sidebar-left.html' %} 
{% else %} 
    {% include 'includes/_home-sidebar.html' %} 
{% endif } 

答えて

0

は、あなたがpage.get_site()でページオブジェクトを介して、現在のサイトにアクセスすることができます動作しません。

これは、あなたのテンプレートのマジック文字列/数字(サイトIDまたは名前を確認するための)で終わると言われています。これを回避する方法の1つは、wagtail.contrib.settingsモジュールを使用することです。

モジュールを正しく設定した後、myapp/wagtail_hooks.pyに(管理者に表示されます)の設定オブジェクトを作成します。

from wagtail.contrib.settings.models import BaseSetting, register_setting 


@register_setting 
class LayoutSettings(BaseSetting): 
    POSITION_LEFT = 'left' 
    POSITION_RIGHT = 'right' 
    POSITIONS = (
     (POSITION_LEFT, 'Left'), 
     (POSITION_RIGHT, 'Right'), 
    ) 
    sidebar_position = models.CharField(
     max_length=10, 
     choices=POSITIONS, 
     default=POSITION_LEFT, 
    ) 

をテンプレートの設定を使用myapp/templates/myapp/mytemplate.html

{% if settings.myapp.LayoutSettings.sidebar_position == 'left' %} 
    {% include 'includes/_home-sidebar-left.html' %} 
{% else %} 
    {% include 'includes/_home-sidebar.html' %} 
{% endif } 
関連する問題