2015-04-29 3 views
1

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

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

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

+0

Этот код выглядит нормально. Вы должны иметь возможность прокручивать петлю Children of the Children, как вы делаете. Все ли все страницы настроены на 'ShowInMenus'? '$ Дети' возвращает только те страницы, которые установлены в' ShowInMenus'. В противном случае вы можете использовать '$ AllChildren' для получения скрытых страниц. Имеются ли в дереве сайтов страницы с глубиной 3 уровня? Что такое '$ Model'? Является ли это настраиваемой переменной, которую вы добавили в свой класс? – 3dgoo

+0

@ 3dgoo Да, все страницы, которые я хочу показать, правильно установлены ShowInMenus. Да, есть страницы 3 уровня глубоко. И да, $ Model - это настраиваемая переменная. –

+0

@ 3dgoo, глядя в нее дальше, похоже, что я получаю значение $ Link, но не модель, поэтому мне просто нужно исследовать пользовательскую переменную. Спасибо за вашу помощь; вы хотите переместить свой комментарий, чтобы быть ответом? –

ответ

3

Да, можно пройти петлю «Дети детей».

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

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

Убедитесь, что на всех страницах каждого уровня установлено значение 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> 
Смежные вопросы