У Primary Links не отображаются подуровни. Кто знает в чем проблема и как ее решить?
У меня Primary Links находятся в left sidebar в виде блока, как меню navigation.
Но по моему замыслу, это меню должно отличаться от других меню. Я тоже еще не нашел решения. Но ведь child page же можно назначать у primary links, только они не отображаются )
Только что проверил, drupal 5.0, тема garland. Включил слева блок с primary links, создал два пункта меню, один вложен в другой, все вроде нормально отображается... Или не так понял задачу?!
Если выводить primary links как блок, то они ничем не будут отличаться от остальных меню.
Проблема возникает когда primary links надо вывести строчкой <?phpprinttheme('links', $primary_links)?>
прописанной в page.tmp.php (это для того, чтобы можно было расположить их где угодно, и оформить как угодно).
> Проблема возникает когда 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; ?>
Как я понимаю, это эффект можно получить, назначая одно меню, как primary и secondary. Но в таком случае 1 уровень этого меню отображается отдельно, второй уровень - отдельно. Как сделать чтобы меню было похоже по структуре на обычное меню (такое как Navigation)? Вообще, хочу сказать, этот способ не очень удобен.
Еще интересный пункт есть в функции theme_links, которая используется для вывода Primary или Secondary (как я понимаю). Это функция назначает для каждого пункта меню свой класс, в котором приписывается уровень, ну а это значит, что если мы пишем в page.tmp.php printtheme('links', $primary_links)
то должно выводиться меню, которое состоит из этих уровней. Но оно выводиться одноуровневое.
Эта функция menu_tree() практически бесполезна, когда нужно сделать отдельные стили для меню разного уровня, так как при этом выводятся все уровни меню с одним классом.
Например вот как это выглядит в 6:
В итоге все меню с классом "menu"...
Может кто-нибудь подскажет как дописать вывод меню через функцию "menu_tree", но с разными классами... например "sub_menu" для вложенного меню.
Комментарии
Primary Links как я понял это вообще что-то отдельное
лучше другое меню туда вставьте=)
Но по моему замыслу, это меню должно отличаться от других меню. Я тоже еще не нашел решения. Но ведь child page же можно назначать у primary links, только они не отображаются )
Только что проверил, drupal 5.0, тема garland. Включил слева блок с primary links, создал два пункта меню, один вложен в другой, все вроде нормально отображается... Или не так понял задачу?!
Если выводить primary links как блок, то они ничем не будут отличаться от остальных меню.
Проблема возникает когда primary links надо вывести строчкой
<?php print theme('links', $primary_links) ?>
прописанной в page.tmp.php (это для того, чтобы можно было расположить их где угодно, и оформить как угодно).
> Проблема возникает когда 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; ?>
Вот Dan ответил тут - http://www.drupal.ru/node/3335#comment-16825 на подобный вопрос.
Как я понимаю, это эффект можно получить, назначая одно меню, как primary и secondary. Но в таком случае 1 уровень этого меню отображается отдельно, второй уровень - отдельно. Как сделать чтобы меню было похоже по структуре на обычное меню (такое как Navigation)? Вообще, хочу сказать, этот способ не очень удобен.
Еще интересный пункт есть в функции theme_links, которая используется для вывода Primary или Secondary (как я понимаю). Это функция назначает для каждого пункта меню свой класс, в котором приписывается уровень, ну а это значит, что если мы пишем в page.tmp.php
print theme('links', $primary_links)
то должно выводиться меню, которое состоит из этих уровней. Но оно выводиться одноуровневое.
На Drupal.org приводится такое решение проблемы.
Надо Primary links вывести из page.tmp.php такими строчками:
<?php if (isset($primary_links)) { ?>
<?php } ?>
Тогда Primary будут отображаться как меню, а присвоенное Id="primary_menu" позволит нам настраивать меню как захочется.
Я видел это решение раньше, но почему-то не придал ему значения. )
Пользуюсь таким кодом.
<?php print menu_tree($menu_name = 'primary-links'); ?>
Он не добавляет лишнего ul
Эта функция 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" для вложенного меню.