Я бы хотел перенаправить пункты верхнего меню на странице, которую я пишу, чтобы они указывали на их детей, если они есть. Например. Этот сайт имеет О верхнем уровне, с несколькими страницами CMS внизу. Когда пользователь нажимает на кнопку «about», я хочу показать первую дочернюю страницу в меню верхнего уровня about.
Я могу сделать это, как показано ниже, но это неправильно. Я знаю, что могу сделать статическое перенаправление, но я не хочу этого делать, так как может измениться первый ребенок (в конце концов, это система 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 / все еще активна. Это не самая плохая вещь в мире, если кто-то заходит туда, он получит пустую страницу, но я бы предпочел, чтобы этого не произошло. Я думаю, если бы я написал расширение для навигации, тот же недостаток был бы там. Я предполагаю, что мне нужен программный редирект для перенаправления на первый дочерний элемент, если эта страница нажата. Мысли? Я, вероятно, могу сделать это в логике шаблона, но это кажется сумасшедшим.