2016-09-26 2 views
0

Ich habe mehrere Produktseiten auf meiner Site, die identische Index- und Seiteneinstellungen, aber einen anderen URL-Pfad haben. Ich möchte die Vorlage erneut verwenden, aber die Ergebnisse filtern, um nur die untergeordneten Objekte dieser Indexseite anzuzeigen.Wagtail-Indexvorlage für mehrere Listen wiederverwenden

Zum Beispiel:

Aktuell

www.../carnival - index page that displays all child objects 
www.../carnival/rides-games - child page of carnival 
www.../carnival/etc... 

Ich möchte die gleiche Index-Seite auf andere Bereiche der Website verwenden:

www.../catering - index page that displays all child objects 
www.../catering/fun-food - child page of catering 
www.../catering/etc... 

Aber, wenn ich den gleichen Index-Seite und besuchen Sie meine carnival Seite, ich sehe alle meine Catering-Kind-Objekte auch.

Unten ist mein Code - bitte helfen Sie mir aus; Ich weiß, dass es einen DRY-Weg geben muss, dies zu tun. Vielen Dank.

standard_index_page.html

{% block content %} 
... 
{% standard_index_listing %} 
... 
{% endblock %} 

standard_index_listing.html

{% if pages %} 
    {% for pages in pages %} 
    <div class="col-xs-6 col-sm-4 col-md-3 mt20 hover-float"> 
     <div class="team-two"> 
     {% if pages.feed_image %} 
      {% image pages.feed_image original as img %} 
      <div class="team-one" data-animation="zoomIn" data-animation-delay="100" style="background: url('{{ img.url }}') no-repeat top center; background-size: cover"></div> 
     {% endif %} 
     <h5>{{ pages.title }}</h5> 
     <small><a href="{% pageurl pages %}" class="color-pasific">Learn More </a></small> 
     </div> 
    </div> 
    {% endfor %} 
{% endif %} 

home_tags.py

@register.inclusion_tag(
    'home/tags/standard_index_listing.html', 
    takes_context=True 
) 
def standard_index_listing(context): 
    pages = StandardPage.objects.live() 
    return { 
     'pages': pages.select_related('feed_image'), 
     'request': context['request'], 
    } 

Antwort

1

Innerhalb des context-Wörterbuchs, das an das standard_index_listing-Tag übergeben wurde, steht die aktuelle Seite als 'page' zur Verfügung. Sie können diese verwenden, um die queryset (siehe http://docs.wagtail.io/en/v1.6.2/reference/pages/queryset_reference.html#module-wagtail.wagtailcore.query) zu filtern:

def standard_index_listing(context): 
    pages = StandardPage.objects.live().child_of(context['page']) 
    return { 
     'pages': pages.select_related('feed_image'), 
     'request': context['request'], 
    } 
+0

Sie auch 'Seiten = Kontext tun konnte [ 'Seite'] get_children() leben()'... – 404

Verwandte Themen