2015-11-08 5 views
0

Я изучаю Silverstripe CMS сегодня и столкнулся с проблемой, на которую я не могу найти ответ.Пользовательское меню навигации в Silverstripe

У меня есть выпадающее меню с CSS с тремя главными заголовками. Названия сами по себе не являются ссылками, однако дети.

Проблема, с которой я сталкиваюсь, заключается в том, что, как я ее читаю, меню создается из иерархии страниц. Мои главные названия меню - это не страницы, так как мне начать с этого, а затем поместить правильные ссылки на страницы под каждым заголовком?

Я использую этот код для создания меню динамически

<nav class="seven columns u-right-align main-nav"> 
     <ul style="position: relative; z-index: 10000"> 
       <% loop $Menu(1) %> 
        <li>$MenuTitle 
        <% if $LinkOrSection == section %> 
         <% if $Children %> 
           <ul> 
           <% loop $Children %> 
            <li><a href="$Link">$MenuTitle</a></li> 
           <% end_loop %> 
          </ul> 
         <% end_if %> 
        <% end_if %> 
       </li> 
      <% end_loop %> 
     </ul> 
    </nav> 

Ожидаемое расположение ...

<nav class="seven columns u-right-align main-nav"> 
    <ul style="position: relative; z-index: 10000"> 
     <li>About <!-- I do not know where to create this title in SS --> 
      <ul> 
       <li><a href="">Annual Meeting</a></li> 
       <li><a href="">History</a></li> 
       <li><a href="">Society Calendar</a></li> 
      </ul> 
     </li> 
    </ul> 
</nav> 

ответ

3

Ну, как вы не знаете, где поставить «О» раздел title - это не встроено в SilverStripe по умолчанию. Вам нужно будет добавить «RedirectorPage» для него и перенаправить на первого ребенка.

К счастью, у других также была эта проблема, и есть some page types that do the trick for you.

Вы можете повторно использовать шаблон, который у вас уже есть.

Тип страницы связан выше, имеет funcitonality в init() методы контроллера для перенаправления на первый ребенок, который довольно легко:

function init() { 
    parent::init(); 

    if($this->Children()->Count()){ 
     Controller::redirect($this->Children()->First()->AbsoluteLink()); 
    } 
} 

Так что зависит от вас, если вы поменяете вручную с помощью по умолчанию RedirectorPage или если вы хотят чего-то более интересного.

Смежные вопросы