基于 Django WagtailCMS 的显示 SITE_ID
Display based on Django WagtailCMS SITE_ID
如何基于 WagtailCMS SITE_ID 创建一个 if
块来显示我的副菜单之一?
试过这个,但没用
{% if settings.SITE_ID == 1 %}
{% include 'includes/_home-sidebar-left.html' %}
{% else %}
{% include 'includes/_home-sidebar.html' %}
{% endif }
假设这是一个页面模板,您可以通过page.get_site()的页面对象访问当前站点。
话虽这么说,但您最终会在模板中获得魔法 strings/numbers(用于检查站点 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 }
如何基于 WagtailCMS SITE_ID 创建一个 if
块来显示我的副菜单之一?
试过这个,但没用
{% if settings.SITE_ID == 1 %}
{% include 'includes/_home-sidebar-left.html' %}
{% else %}
{% include 'includes/_home-sidebar.html' %}
{% endif }
假设这是一个页面模板,您可以通过page.get_site()的页面对象访问当前站点。
话虽这么说,但您最终会在模板中获得魔法 strings/numbers(用于检查站点 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 }