выводим внучатые категории
Вот решение для отображения внучатых категорий в указанном шаблоне, основанное на предположении, что c представляет собой экземпляр модели категории, имеющей метод get_children.
<ul>
{% for c in categories %}
{% if c.is_root_node %}
<li {% if category.slug == c.slug %}class="selected"{% endif %}>
<a href="{{ c.get_absolute_url }}" class="pt-link">{{ c.title }}</a>
{% if c.get_children %}
<ul>
{% for child in c.get_children %}
<li {% if category.slug == child.slug %}class="selected"{% endif %}>
<a href="{{ child.get_absolute_url }}" class="pt-link">{{ child.title }}</a>
{% if child.get_children %}
<ul>
{% for grandchild in child.get_children %}
<li {% if category.slug == grandchild.slug %}class="selected"{% endif %}>
<a href="{{ grandchild.get_absolute_url }}" class="pt-link">{{ grandchild.title }}</a>
</li>
{% endfor %}
</ul>
{% endif %}
</li>
{% endfor %}
</ul>
{% endif %}
</li>
{% endif %}
{% endfor %}
</ul>
Пояснения:
{% if child.get_children %}: Проверяем, есть ли у дочерней категории (child) свои дочерние категории (внучатые).- Вложенный цикл
{% for grandchild in child.get_children %}: Если уchildесть дочерние категории, то проходим по ним, называя каждуюgrandchild. {{ grandchild.get_absolute_url }}и{{ grandchild.title }}: Отображаем URL и заголовок каждой внучатой категории.- HTML-структура: Внучатые категории располагаются во вложенном списке
<ul>.
Важные замечания:
- Глубина вложенности: Этот код отображает только внучатые категории. Если вам нужна поддержка более глубоких уровней вложенности (правнуки и т.д.), вам потребуется рекурсивный шаблон или пользовательский тег шаблона.
category.slug: Обратите внимание на использованиеcategory.slugдля выделения текущей категории. Убедитесь, что переменнаяcategoryдоступна в контексте шаблона и представляет собой текущую просматриваемую категорию. Если это не так, заменитеcategory.slugна правильную переменную, содержащую slug текущей категории.- Стиль: CSS-класс
"selected"нужно определить в вашей таблице стилей CSS для визуального выделения выбранной категории. - Производительность: Для категорий с большим количеством уровней вложенности рекомендуется использовать рекурсивные шаблоны или пользовательские теги шаблонов, чтобы избежать избыточной логики в самом шаблоне и потенциальных проблем с производительностью. Рекурсивный шаблон будет более элегантным и легче поддерживаемым решением для отображения произвольной глубины дерева категорий.
Комментарии
Пока комментариев нет. Будьте первым!
Оставить комментарий