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

Главные вкладки

Аватар пользователя yaguarchik yaguarchik 21 января 2007 в 21:45

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

Комментарии

Аватар пользователя yaguarchik yaguarchik 21 января 2007 в 22:47

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

Аватар пользователя coyotle coyotle 21 января 2007 в 23:54

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

Аватар пользователя yaguarchik yaguarchik 22 января 2007 в 0:23

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

Аватар пользователя vadbars@drupal.org vadbars@drupal.org 22 января 2007 в 9: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; ?>

Аватар пользователя yaguarchik yaguarchik 22 января 2007 в 13:06

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

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

Аватар пользователя yaguarchik yaguarchik 22 января 2007 в 20: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" позволит нам настраивать меню как захочется.

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

Аватар пользователя Alexanderos Alexanderos 22 апреля 2011 в 21: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" для вложенного меню.