Ich habe eine funktionierende Lösung für eine Vorlage, die optionale Sidebars ermöglicht. Abhängig von den vom Benutzer gewählten Optionen; signifikante DOM-Manipulationen treten auf.Django - Generalisieren einer Vorlage mit optionaler Sidebar
Die Arbeitslösung ist unnötig groß und bietet einige Code-Duplizierung. Es erstreckt sich auch nicht gut.
Ich bin auf der Suche nach einer viel allgemeineren Lösung. Eine, die eine einfachere Erweiterung oder Zusammenfassung ermöglicht, damit ich mich nicht für jede Seite mit einer Seitenleiste wiederholen muss.
Die Arbeitslösung
{% extends "app/base.html" %}
{% load wagtailcore_tags %}
{% block content %}
{% if self.sidebar == "left" %}
<div class="row">
<div class="4u 12u(mobile)">
{% include "app/includes/sidebar.html" with sidebar_items=self.sidebar_items.all %}
</div>
<div class="8u 12u(mobile) important(mobile)">
<article class="box post">
{% include "app/includes/banner.html" with feed_image=self.feed_image only %}
{{ self.body|richtext }}
{% include "app/includes/related_links.html" with related_links=self.related_links.all only %}
</article>
</div>
</div>
{% elif self.sidebar == "right" %}
<div class="row">
<div class="8u 12u(mobile)">
<article class="box post">
{% include "app/includes/banner.html" with feed_image=self.feed_image only %}
{{ self.body|richtext }}
{% include "app/includes/related_links.html" with related_links=self.related_links.all only %}
</article>
</div>
<div class="4u 12u(mobile)">
{% include "app/includes/sidebar.html" with sidebar_items=self.sidebar_items.all %}
</div>
</div>
{% else %}
<article class="box post">
{% include "app/includes/banner.html" with feed_image=self.feed_image only %}
{{ self.body|richtext }}
{% include "app/includes/related_links.html" with related_links=self.related_links.all only %}
</article>
{% endif %}
{% endblock %}
{% block content %}
zuerst hier in app/base.html
definiert:
<div id="main-wrapper">
<div class="container">
<!-- <article class="box post"> -->
{% block content %}{% endblock %}
<!-- {% include 'app/includes/prev_next.html' %} -->
<!-- </article> -->
</div>
</div>
Und sidebar.html
sieht wie folgt aus:
{% load wagtailimages_tags %}
{% for sidebar_item in sidebar_items %}
<section class="box">
{% image sidebar_item.image original as img %}
<a href="{{ sidebar_item.link }}"" class="image featured"><img src="{{ img.url }}" alt="" /></a>
<header>
<h3>{{ sidebar_item.title }}</h3>
</header>
<p>{{ sidebar_item.body }}</p>
{% if sidebar_item.button_text %}
<footer>
<a href="{{ sidebar_item.link }}" class="button alt">{{ sidebar_item.button_text }}</a>
</footer>
{% endif %}
</section>
{% endfor %}
Mein erster Versuch, es zu verallgemeinern war zu versuchen Sie, alle Bedingungen in app/base.html
zu tun, aber ich konfrontiert Probleme, wenn es sich um die Position {{ block content }}
.
Jede Hilfe sehr geschätzt.
Interessant, was Sie über die Ladezeiten sagen. Ich habe es ursprünglich ausgeschlossen, die Anzahl der Vorlagen zu reduzieren, aber ich muss es vielleicht noch einmal überdenken. Vielen Dank für Ihre Antwort. –