Развернуть первичные ссылки - PullRequest
2 голосов
/ 06 августа 2010

Как получить дочерние первичные ссылки для вывода в HTML? Только мои первичные ссылки родительского уровня генерируют LI.

У меня очень очень простое меню двухуровневых первичных ссылок. На сайте 5 страниц: трое родителей, а у третьего родителя двое детей. В настройках административного меню у меня установлен флажок «расширен» родителей и детей.

Я попытался добавить все виды функций из stackoverflow (включая Drupal 6: печать первичных ссылок без изменений и всех дочерних элементов ) и drupal и в других местах в template.php, чтобы дети могли выводить ... ничего !

Как сделать первичные ссылки расширенными? Это кажется таким глупым вопросом. Почему бы не установить флажки «развернуть» для печати дочерних элементов?

Ответы [ 5 ]

4 голосов
/ 05 марта 2011

Прямое решение вашей проблемы.Для Drupal 6:

<?php 
  // gets whatever is set as the primary menu source, 
  // prints the whole tree, 
  // pays attention to expanded settings
  $menu_name = variable_get('menu_primary_links_source', 'primary-links');
  print menu_tree($menu_name);
?>

Затем я обертываю это в «первичный» div-идентификатор, в моих page.tpl.php и page-front.tpl.php

Не забудьте установить каждыйпункт меню, в котором дочерние элементы должны быть расширены, если вы хотите, чтобы они начинались с разметки, а не свертывания/ admin / build / menu

Это решение учитывает ваши настройки на этой странице: / admin / build / menu / settings

Для получения дополнительной информации см. код Drupal 6 на этой странице http://drupal.org/node/68578

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

2 голосов
/ 09 августа 2010

Мне не удалось получить первичные ссылки для печати своих детей при использовании темы ('links', $ primary_links) в page.tpl.php независимо от настроек конфигурации.

Вместо этого, после нескольких часов поискаЯ нашел эту страницу на drupal.org, где упоминается, что первичные ссылки будут выводиться по-разному в зависимости от того, используются ли они в качестве ссылок в теме или в виде блока:

http://drupal.org/node/187932

Это обсуждение того, как опция «расширенных» первичных ссылок может выглядеть как «не работающая», когда они используются как опция темы, а не как блок.При использовании в качестве блока первичные ссылки будут отображать полную иерархию настроенного вами списка, включая дочерние.При использовании в теме, если вы не перезапишите настройки по умолчанию для отображения основных ссылок для вашей темы, в нем будут перечислены только первичные ссылки верхнего уровня.Это то, что Марк упомянул как поведение по умолчанию выше, и то, что я испытывал.

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

поэтому вместо:

<div id="nav">          
     <?php if ($primary_links): ?>
        <div id="primary">
          <?php print theme('links', $primary_links); ?>
        </div> 
      <?php endif; ?>

      <?php if ($secondary_links): ?>
        <div id="secondary">
          <?php print theme('links', $secondary_links); ?>
        </div> 
      <?php endif; ?>
</div>

Теперь у меня есть:

  <div id="nav">
  <?php if ($navigation): ?>
    <?php print $navigation ?>
  <?php endif ?>
 </div>

И указан регион в моем.информационный файл для «навигации», AND перешел к настройкам блока и назначил «первичные ссылки» для моей новой области навигации.

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

0 голосов
/ 06 сентября 2011

Этот блестящий пост в блоге рассказывает вам точно, как вы можете получить всю древовидную структуру для ваших основных ссылок (включая дочерние) программно, и даже показывает вам способ привести эту структуру в порядок для более легкого использования.

http://jamesmorrish.co.uk/blog/get-a-clean-array-of-primary-links-in-drupal/

0 голосов
/ 26 мая 2011

Я полагаю, что модуль блока *1001* делает то, что вы ищете. Еще несколько подробностей об этом модуле (со страницы его проекта):

Итак ... Вы когда-нибудь использовали функцию ссылок на главное и дополнительное меню в своей теме и задавались вопросом: «Как, черт возьми, я могу отображать какие-либо пункты меню глубже, чем это?»

Ну, вот что делает этот модуль. Он предоставляет настраиваемые блоки деревьев меню, начиная с любого уровня любого меню. И еще!

Таким образом, если вы используете только функцию ссылок главного меню своей темы, вы можете добавить и настроить блок «Главное меню (уровни 2+)». Этот блок появится, как только вы окажетесь на одной из страниц Главного меню, и покажет дерево меню для 2-го уровня (и глубже) вашего Главного меню и расширится, когда вы пройдете по дереву. Вы также можете ограничить глубину дерева меню (например, «Главное меню (уровни 2-3)») и / или развернуть все дочерние подменю (например, «Главное меню (расширенные уровни 2 +)»).

0 голосов
/ 06 августа 2010

Как отображение основных ссылок зависит от вашей темы.Не зная больше о вашей теме и о том, как она реализует первичные ссылки, невозможно сказать наверняка, почему ваши первичные ссылки не расширяются.

Одна вещь, которую вы можете проверить, - это настройки меню;во многих темах вторым уровнем является отдельное меню, которое называется Дополнительные ссылки .Вы можете изменить эту функцию, перейдя на http://example.com/admin/build/menu/settings и установив Источник для вторичных ссылок на Первичные ссылки : здесь будет отображаться второй уровень меню первичных ссылок вместо (вероятно,пусто) меню вторичных ссылок.

...