Можно ли получить детей детей в меню SilverStripe?

Я собираю 3-х уровневое меню навигации в шаблоне SilverStripe 3.1, и у меня есть следующий код в моем шаблоне:

<% loop $Menu(1) %>
...
  <% loop $Children %>
...
    <% loop $Children %>
     <li><a href="$Link">$Model</a></li>
    <% end_loop %>
  <% end_loop %>
<% end_loop %>

Однако я не получаю ожидаемый результат от 3-го уровня. Можно ли на самом деле получить детей детей? Если нет, то что мне делать вместо этого? Спасибо!

1 ответ

Решение

Да, можно пройти цикл "Дети детей".

Ваш код выглядит правильно для меня. Это должно работать правильно.

Вот несколько возможных проблем для проверки.

Убедитесь, что все страницы на каждом уровне имеют ShowInMenus установите в true. $Children а также $Menu(1) возвращает только те страницы, которые имеют ShowInMenus установите в true. Этот флажок можно найти на вкладке "Настройки" любой страницы. В противном случае вы можете использовать $AllChildren вместо $Children чтобы получить скрытые страницы, а также.

Убедитесь, что в дереве сайта есть страницы глубиной 3 уровня. Очевидная вещь, чтобы проверить.

$Model не является встроенной переменной страницы. Это должна быть пользовательская переменная, которую вы установили. Удостоверьтесь, что это установлено в Страницу, имеет заполненные значения и доступно во внешнем интерфейсе.

Вот код тестового шаблона, который вы можете использовать для проверки вывода дерева вашего сайта. Это может помочь вам в отладке вашей проблемы:

<ul>
<% loop $Menu(1) %>
    <li>
        <a href="$Link">$Title - $Model</a>
        <% if $Children %>
        <ul>
        <% loop $Children %>
            <li>
                <a href="$Link">$Title - $Model</a>
                <% if $Children %>
                <ul>
                <% loop $Children %>
                    <li>
                        <a href="$Link">$Title - $Model</a>
                    </li>
                <% end_loop %>
                </ul>
                <% end_if %>
            </li>
        <% end_loop %>
        </ul>
        <% end_if %>
    </li>
<% end_loop %>
</ul>
Другие вопросы по тегам