Узел может узнать, является ли он первым или последним на своем уровне, путем запроса get_previous_sibling
и get_next_sibling
.
<a class="{% if not node.get_previous_sibling %}first_child {% endif %}{% if not node.get_next_sibling %}last_child{% endif %} href="{{ node.url }}">{{ node.title }}</a>
Эти вызовы должны работать в кеше узла, поэтому выиграл 'т ударил базу данных.Тем не менее, в CSS уже есть псевдо-селекторы для first-child и last-child, поэтому может быть лучше сделать любое стилирование, используя их, а не явные классы, если вы не ориентируетесь на старые браузеры.