Выпадающие праймари меню - легко и просто (решено)

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

Аватар пользователя Geldora Geldora 9 июня 2009 в 18:27

Копирую для себя, что не потерять Smile Но думаю, многих заинтересует

Рецепт отсюда - http://www.theraggedyedge.co.uk/content/simple-and-easy-drop-down-sucker...

Simple and easy drop down (Suckerfish) menus for Drupal 6

Я пытался найти простое и красивое решение как добавить suckerfish меню (выпадающие меню). Однако, большинство решений предполагали либо магию incantations (? - не знаю этого слова) или плагины jquery. Немного чересчур.

И когда я уже был готов потерять надежду, я увидел тему Multiflex-3 для drupal и её решение по использованию меню suckerfish. Наконец-то что-то, что было легко и просто использовать! Никакого js, что по-моему, очень хорошо.

Код в файле template.php file (Из темы multiflex-3):

/**
* Return a cascade primary links.
* Clone implementation from user_block().
*
* return
* a themed cascade primary links.
*/

function phptemplate_primary() {
$output = '<div id="primary-links-region">';
$output .= menu_tree(variable_get('menu_primary_links_source', 'primary-links'));
$output .= '</div>';
return $output;
}

Далее добавить:

<?php if (isset($primary_links)) : ?>
<?php print phptemplate_primary($primary_links); ?>
<?php endif; ?>

В файл page.tpl.php file где я хотел видеть выпадающие меню. Красиво и просто. wahay!

(Я переименовал функцию phptemplate_primary() в arthemia_primary(). Потому что я это умею.)

Спасибо multiflex-3 за это простое решение.

Комментарии

Аватар пользователя andypost@drupal.org andypost@drupal.org 10 июня 2009 в 7:31

Категорически некорректно! вывод меню это всего лишь [ru-api=menu_tree]menu_tree()[/ru-api] незачем городить phptemplate... да и слизано с блога в котором речь идет о конкретной теме оформления. ведь в этом коде нет css, который делает собственно меню! Лучше взять тему acquia marina там все это реализовано и описано.

Лучше привести ссылку на http://acquia.com/blog/dropdown-drupal-menus-accessibility-friendly-imag...

Последняя намного правильнее и возможностей больше

Аватар пользователя Geldora Geldora 10 июня 2009 в 14:16

Хм, Андипост, а я вот вашу ссылку не поняла... Там речь идет а) о модуле Найс Меню б) о использовании картинок, а не о сускерфише.

В принципе, я сразу написала, откуда "слизано" Smile Теперь объясняю кому и зачем это надо Smile

Во первых, в сети полно готовых рецептов выпадающего меню на цсс. Все что надо - перекопировать стили себе в стайл.цсс, обеспечить полное дерево праймари меню и соответственно, чтобы совпадали классы и айди.

Дерево праймари меню делается так: (код списан с Аквии Марина)

<?php print menu_tree($menu_name = 'primary-links'); ?>

Если хотите добавить какой-то свой класс или АйДи к праймари меню, нужно переписать эту функцию:

<?php print theme('links', $primary_links, array('class' => 'links primary-links любой_класс')) ?>

По аналогии, можно добавить айди.

Либо первый код, либо второй (он по умолчанию в большинстве тем) нужно добавить в page.tpl.php, там где будете выводить праймари.

По большому счету (особенно, если вы разбираетесь в цсс Lol этих двух сниппетов хватит за глаза Smile А я вот не разбираюсь, и умею только копировать с исходников Smile И у меня была проблема:
Я переделывала темы оформления с Ворпресса (как раз таки Артемию, и пока сама переделала, парень который ведет тот блог её уже сам портировл Lol

Там есть выпадающие меню, но у ворпресса другой код:

<ul id="lala">
 <li class="ghhg">
  <ul id="baba">
 и так далее

Т.е. а) нужно вывести все дерево меню, б) нужно приписать к меню уникальный айди. Как скрестить две выше описанные функции я не знаю... Если выводить праймари меню деревом, то класс останется дефолтным, а АйДи не будет вообще... Лично я проблему не разрешила.

А этот парень предлагает добавить в темплейт функцию, которая мало того что выводит дерево, но и добавляет лишний div с каким-нибудь Айди, что и требовалось получить Smile

(П.С. Я правда только сейчас приступлю к тестированию, вчера как увидела, сразу сюда скопировала чтобы не потерять, даже не офрмила нормально и часть кода потерялась Lol