0

Wie kann ich einen if Block erstellen, um eines meiner Sidemenus basierend auf dem BachstailCMS SITE_ID anzuzeigen?Anzeige basierend auf Django BachstailCMS SITE_ID

dies versucht, aber es nicht

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

Antwort

0

Angenommen, dies ist eine Seitenvorlage, können Sie die aktuelle Seite durch das Seitenobjekt mit page.get_site() Zugriff funktioniert.

Das heißt, Sie werden mit magischen Zeichenfolgen/Zahlen (zum Überprüfen der Website-ID oder des Namens) in Ihren Vorlagen enden. Eine Möglichkeit, das zu umgehen, wäre die Verwendung des Moduls wagtail.contrib.settings.

Nachdem das Modul korrekt einrichten, erstellen Sie ein Objekt Einstellungen in myapp/wagtail_hooks.py (die im Admin angezeigt):

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, 
    ) 

Und verwenden Sie die Einstellungen in den Vorlagen 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 } 
Verwandte Themen