У Primary Links не отображаются подуровни

Прислано: yaguarchik

вс, 21/01/2007 - 18:45

У Primary Links не отображаются подуровни. Кто знает в чем проблема и как ее решить?
У меня Primary Links находятся в left sidebar в виде блока, как меню navigation.

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано cwer в вс, 21/01/2007 - 19:34.

Primary Links как я понял это вообще что-то отдельное =)
лучше другое меню туда вставьте=)


Опубликовано yaguarchik в вс, 21/01/2007 - 19:47.

Но по моему замыслу, это меню должно отличаться от других меню. Я тоже еще не нашел решения. Но ведь child page же можно назначать у primary links, только они не отображаются )


Опубликовано coyotle в вс, 21/01/2007 - 20:54.

Только что проверил, drupal 5.0, тема garland. Включил слева блок с primary links, создал два пункта меню, один вложен в другой, все вроде нормально отображается... Или не так понял задачу?!


Опубликовано yaguarchik в вс, 21/01/2007 - 21:23.

Если выводить primary links как блок, то они ничем не будут отличаться от остальных меню.
Проблема возникает когда primary links надо вывести строчкой
 <?php print theme('links', $primary_links) ?>
прописанной в page.tmp.php (это для того, чтобы можно было расположить их где угодно, и оформить как угодно).


Опубликовано vadbars@drupal.org в пн, 22/01/2007 - 06:33.

> Проблема возникает когда primary links надо вывести строчкой

В теме garland так и сделано. Посмотрите, например, на http://putksebe.ru верхнее меню "Статьи". Когда его выбираешь, появляются пункты "Статьи такой-то" и "Статьи другой-то".
В page.tpl.php это прописано так:
<?php if (isset($primary_links)) : ?><?php print theme('links'$primary_links, array('class' => 'links primary-links')) ?><?php endif; ?><?php if (isset($secondary_links)) : ?><?php print theme('links'$secondary_links, array('class' => 'links secondary-links')) ?><?php endif; ?>


Опубликовано vadbars@drupal.org в пн, 22/01/2007 - 06:49.

Вот Dan ответил тут - http://www.drupal.ru/node/3335#comment-16825 на подобный вопрос.


Опубликовано yaguarchik в пн, 22/01/2007 - 10:06.

Как я понимаю, это эффект можно получить, назначая одно меню, как primary и secondary. Но в таком случае 1 уровень этого меню отображается отдельно, второй уровень - отдельно. Как сделать чтобы меню было похоже по структуре на обычное меню (такое как Navigation)? Вообще, хочу сказать, этот способ не очень удобен.

Еще интересный пункт есть в функции theme_links, которая используется для вывода Primary или Secondary (как я понимаю). Это функция назначает для каждого пункта меню свой класс, в котором приписывается уровень, ну а это значит, что если мы пишем в page.tmp.php
 print theme('links', $primary_links)
то должно выводиться меню, которое состоит из этих уровней. Но оно выводиться одноуровневое.


Опубликовано yaguarchik в пн, 22/01/2007 - 17:11.

На Drupal.org приводится такое решение проблемы.
Надо Primary links вывести из page.tmp.php такими строчками:

<?php if (isset($primary_links)) { ?>

<?php print theme('menu_tree',variable_get('menu_primary_menu',0)); ?>

<?php ?>

Тогда Primary будут отображаться как меню, а присвоенное Id="primary_menu" позволит нам настраивать меню как захочется.

Я видел это решение раньше, но почему-то не придал ему значения. )


Опубликовано Brun в чт, 16/07/2009 - 10:07.

Пользуюсь таким кодом.
<?php print menu_tree($menu_name 'primary-links'); ?>
Он не добавляет лишнего ul


Опубликовано Alexanderos в пт, 22/04/2011 - 17:41.

Эта функция menu_tree() практически бесполезна, когда нужно сделать отдельные стили для меню разного уровня, так как при этом выводятся все уровни меню с одним классом.
Например вот как это выглядит в 6:

<?php
...
<
div id="primary">
  <
ul class="menu">
    <
li class="expanded first">Пункт 1
      
<ul class="menu">
        <
li class="leaf first">Пункт 1.1</li>
        <
li class="leaf last">Пункт 1.2</li>
      </
ul>
    </
li>
    <
li class="expanded">Пункт 2
      
<ul class="menu">
        <
li class="leaf first">Пункт 2.1</li>
        <
li class="leaf last">Пункт 2.2</li>
      </
ul>
    </
li>
    <
li class="expanded">Пункт 3
      
<ul class="menu">
        <
li class="leaf first last">Пункт 3.1</li>
      </
ul>
    </
li>
    <
li class="leaf">Пункт 4</li>
    <
li class="leaf last">Пункт 5</li>
  </
ul>
</
div>
...
?>

В итоге все меню с классом "menu"...
Может кто-нибудь подскажет как дописать вывод меню через функцию "menu_tree", но с разными классами... например "sub_menu" для вложенного меню.


Ссылки партнёров