Drupal 7 - программно переключать меню на сайте

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


person bradrice    schedule 05.12.2011    source источник


Ответы (2)


Я не уверен на 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, в вашем блоке меню будут отображаться пункты меню второго уровня.

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

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

person SpaceBeers    schedule 05.12.2011
comment
Я не говорю об уровнях, но это полезно. Допустим, у меня есть раздел под названием «О нас» и еще один раздел под названием «Программы». Мне нужны отдельные меню, когда вы находитесь в этих разделах сайта. - person bradrice; 05.12.2011
comment
Ах, хорошо, смотрите новый раздел внизу ответа. - person SpaceBeers; 05.12.2011
comment
В этом случае вы создаете два меню уровня 1. О нас и программах. А затем добавить пункты меню подуровня под каждым и использовать модуль в ответе. Я использовал его на этой странице: samsound.se/reklamproduktion по сравнению с samsound.se/portfolio - person Kristoffer; 05.12.2011

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

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

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

person amateur barista    schedule 06.12.2011