Drupal 7 - программно переключать меню на сайте - PullRequest
1 голос
/ 05 декабря 2011

В Drupal 7 я хочу иметь сайт, который имеет отдельные разделы с левым меню навигации, которое переключается в зависимости от страницы, на которой вы находитесь.Например, я хочу иметь навигацию верхнего уровня, которая приведет вас в раздел, а затем в этом разделе меню будет уникальным для него.Я предполагаю, что мне нужно создать функцию темы в моем файле template.php, чтобы справиться с этим.Может кто-нибудь дать мне представление о том, как начать кодировать это?

Ответы [ 2 ]

4 голосов
/ 05 декабря 2011

Я не уверен на 100%, что следую за тобой, но если я это сделаю, ты сможешь сделать это с помощью модуля Блок меню - http://drupal.org/project/menu_block

Если вы говорите об уровнях:

Если у вас есть меню с несколькими уровнями, но вы хотите показать только 2-й уровень на страницах, где родительский элемент имеет 2-й уровень, тогда вы переходите к структуре -> блоки -> новый блок меню и выбираете меню Вы хотите, с какого уровня меню запустить меню, а затем добавить его туда, куда хотите, как обычный блок.

Пример:

    <ul class="menu">
       <li>Menu item 1</li> 
       <li>Menu item 2</li> 
          <ul class="menu"> 
             <li>Menu item</li> 
             <li>Menu item</li> 
          </ul> 
       <li>Menu item 3</li> 
       <li>Menu item 4</li> 
       <li>Menu item 5</li> 
    </ul>

Ваше главное меню покажет только пункты меню на первом уровне.

Ваш блок меню будет настроен на запуск только со второго уровня, поэтому, если бы вы были на странице пункта меню 2, ваш блок меню отображал бы пункты меню второго уровня.

Если вы не говорите об уровнях:

Вы можете создать отдельные блоки меню, а затем настроить их отображение только на определенных страницах, перейдя в настройки видимости блока, а затем набрав псевдоним узла на странице, на которой вы хотите, чтобы он отображался, и выберите «Только перечисленные страницы» из кнопки радио.

0 голосов
/ 06 декабря 2011

Вместо использования предложения @SpaceBeers я бы решил вашу проблему, используя Context :

  • Я бы определил одно отдельное меню для каждой уникальной страницы.
  • Используя Context, вы можете связать каждый раздел с меню.Вы должны определить отдельный контекст для каждого раздела.
  • Внутри контекста вы должны указать относительный путь к этому разделу в правилах контекста.Затем в реакции контекста вы бы выбрали блок Drupal, который автоматически создается вашим меню.

В качестве плюса, поскольку контексты являются экспортируемыми, вы можете упаковать их в Feature , добавьте эту функцию в свой репозиторий управления исходным кодом и разверните ее в своих блоках DEV, QA и PROD без необходимости вручную копировать настройки позиционирования меню / блока с сервера на сервер.Другими словами, решение Context + Features обеспечит более надежное и масштабируемое решение в долгосрочной перспективе.

...