Charles Smith
Charles Smith

Reputation: 3289

Wagtail Index page not displaying objects of children

I am at my wits-end and feel I am missing something simple but I've looked at it over and over and can't figure it out.

I have a simple person_index_page that I want to show the child person_page objects, but no matter what I try...nothing. I have several sites with a similar setup and they work. Can you please look at my code below and see if you notice something I am missing? Thank you.

home_tags.py

# Person feed for home page and staff page
@register.inclusion_tag(
    'home/tags/person_listing_homepage.html',
    takes_context=True
)
def person_listing_homepage(context, count=3):
    people = PersonPage.objects.live().order_by('?')
    return {
        'people': people[:count].select_related('feed_image'),
        'request': context['request'],
    }

person_index_page.html

{% extends 'base.html' %}
{% load wagtailcore_tags wagtailimages_tags home_tags %}

{% block content %}
...

    {% include "home/tags/person_listing_homepage.html" %}

...
{% endblock %}

person_listing_homepage.html probably should name this at some point

{% for person in people %}
  {% include "home/includes/person_list_item.html" %}
{% endfor %}

person_list_item.html

{% load wagtailcore_tags wagtailimages_tags %}

{# Individual person item in a list - used on people index and home page #}
<a class="list-group-item" href="{% pageurl person %}">
  <div class="media">
    {% if person.feed_image %}
      <div class="media-left">
        {% image person.feed_image width-200 as img %} <img class="media-object" src="{{ img.url }}"/>
      </div>
    {% endif %}
    <div class="media-body">
      <h4 class="media-heading">{{ person.first_name }} {{ person.last_name }}</h4>
      {% if person.search_description %}
        <p>{{ person.search_description }}</p>
      {% endif %}
    </div>
  </div>
</a>

Upvotes: 0

Views: 397

Answers (1)

gasman
gasman

Reputation: 25227

This is more of a "how to debug" question than a Wagtail one. Rather than just giving you the answer directly, here's the process I would take:

You say that adding print(people) inside the person_listing_homepage function doesn't display anything. So, your next question should be: "is this function being run at all?" Change the print statement to print("GOT HERE"). You'll find that this doesn't display anything either - which tells you that the function is not being run.

The next step would be to add some debugging output around the place where the function should be called from - if that doesn't get displayed either, you know that code isn't being run either, and you'd have to keep going up a level until you find something that is being run. So let's look for that place...

And this is where you find the problem. You never call the person_listing_homepage function anywhere in your code. You include the person_listing_homepage.html template, but that's not the same thing. person_index_page.html should become:

{% extends 'base.html' %}
{% load wagtailcore_tags wagtailimages_tags home_tags %}

{% block content %}
...

    {% person_listing_homepage %}

...
{% endblock %}

Upvotes: 1

Related Questions