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

Аватар пользователя yaguarchik

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

Версия Drupal:
0 Thanks

Комментарии

Аватар пользователя cwer
cwer 11 лет назад

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

Аватар пользователя yaguarchik
yaguarchik 11 лет назад

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

Аватар пользователя coyotle
coyotle 11 лет назад

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

Аватар пользователя yaguarchik
yaguarchik 11 лет назад

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

Аватар пользователя vadbars@drupal.org
vadbars@drupal.org 11 лет назад

> Проблема возникает когда 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 11 лет назад

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

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

Аватар пользователя yaguarchik
yaguarchik 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
Brun 9 лет назад

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

Аватар пользователя Alexanderos
Alexanderos 7 лет назад

Эта функция 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" для вложенного меню.