重复使用Wigtail索引模板进行多个列表

时间:2016-09-26 16:23:30

标签: django django-templates wagtail

我的网站上有几个产品页面,它们具有相同的索引和页面设置,但具有不同的URL路径。我想重新使用模板,但过滤结果只显示该索引页的子对象。

例如:

目前

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

我想在网站的其他部分使用相同的索引页:

carnival

但是,当我使用相同的索引页面并访问我的{% block content %} ... {% standard_index_listing %} ... {% endblock %} 页面时,我也会看到所有的餐饮子对象。

以下是我的代码 - 请帮帮我;我知道必须有一种干嘛的做法。谢谢。

standard_index_page.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 %}

standard_index_listing.html

@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'],
    }

home_tags.py

{{1}}

1 个答案:

答案 0 :(得分:1)

在传递给context标记的standard_index_listing字典中,您将当前页面设为'page'。您可以使用它来过滤查询集(请参阅http://docs.wagtail.io/en/v1.6.2/reference/pages/queryset_reference.html#module-wagtail.wagtailcore.query):

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