Я хотел бы перенаправить элементы верхнего меню на странице, которую я пишу, чтобы указать на своих детей, если они есть. Например. этот сайт имеет верхний уровень «О программе» с несколькими страницами CMS внизу. Когда пользователь нажимает на кнопку «О программе», я хочу показать первую дочернюю страницу в меню «О программе» верхнего уровня.
Я могу сделать это, как показано ниже, но это кажется неправильным. Я знаю, что могу сделать статическую переадресацию, но я не хочу этого делать, так как первый дочерний элемент может измениться (в конце концов, это система CMS), и я не хочу, чтобы люди, вводящие данные в CMS, должны были управлять перенаправление. Поэтому я предпочитаю приведенное ниже настроенному перенаправлению.
Это довольно распространенное требование, есть ли стандартный способ сделать это? Я думаю, что смогу сделать это с помощью модификатор навигации, так что я мог бы попробовать этот маршрут следующим.
<div style="display:none;">{% show_menu 0 1 1 %}</div>
<div id="topmenu">
<ul>
{% for child in children %}
<li>
{% if child.children %}
<a href="{{child.children.0.get_absolute_url}}">
{% else %}
<a href="{{child.get_absolute_url}}">
{% endif %}
{{ child.get_menu_title }}
</a>
</li>
{% endfor %}
</ul>
</div>
Что касается вышеизложенного, мне нужно иметь show_menu, иначе данных для моего пользовательского меню не будет. Есть ли способ, чтобы это не было нужно?
Что мне больше всего не нравится в вышеизложенном, так это то, что страница /about/ все еще активна. Это не самое худшее в мире, если кто-то просматривает там, он получит пустую страницу, но я бы предпочел, чтобы этого не происходило. Думаю, если бы я написал навигационное расширение, то был бы такой же недостаток. Я предполагаю, что мне нужно программное перенаправление для перенаправления на первого ребенка, если эта страница будет поражена. Мысли? Я, вероятно, могу сделать это в логике шаблона, но это кажется безумием.