基于Django WagtailCMS SITE_ID的显示

时间:2017-03-06 17:13:16

标签: django django-templates django-views wagtail wagtail-snippet

如何基于WagtailCMS SITE_ID创建一个if块来显示我的一个侧面菜单?

试过这个,但它不起作用

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

1 个答案:

答案 0 :(得分: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 }