0

如何創建if區塊以顯示基於WagtailCMS SITE_ID的我的一個sidemenu?基於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或名稱)。一種解決方法是使用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 }