Выпадающее меню в WordPress

drop-down-menu

Выпадающее меню в представлении не нуждается, все давно уже поняли его преимущества. Удобный способ навигации, отражающий иерархию страниц сайта. И сегодня мы поговорим о том как создать такое меню в своем wordpress-блоге, и как назначить ему различные стили и визульные эффекты.

Начнем с самого простого, как создать выпадающее меню в WordPress. Думаю большинству пользователей это известно, но все же в двух словах объясню. Выпадающее меню – это меню в котором находятся подчиненные страницы, поэтому для того чтобы его создать, вам, в своем блоге нужно создать как минимум одну родительскую страницу, и одну дочернюю.

Чтобы не продолжать беспредметный разговор, давайте представим, что у нас в блоге есть обычная статическая страница под названием “О блоге”, вот для нее мы и создадим три подчиненные страницы: “об авторе”, “контакты”, “партнерам”.

Итак, поочередно, самым обычным способом добавим все три страницы,  за исключением того, что в поле родительская страница следует выбрать  “О блоге”.

page_parent

После этих, допольно простых действий, вы увидете выпадающее меню у себя  в блоге, а вот как оно будет выглядеть, зависит от темы, которую вы используете. Если это одна из тем, идущих в комплекте с WordPress, то ваше меню отобразится в сайдбаре, в виде маркированного списка.

Если используете стороннюю тему, тут все зависит от совести разработчика. Мне часто попадались очень красивые темы, в которых совершенно не было предусмотрено выпадающее меню, вследствии чего после его добавления, шаблон разваливался на части.

Так вот если такое произошло и с вами, далее я расскажу, как формируется красивое выпадающее меню, на примере всем знакомого шаблона “WordPress Default”.

1.  Первое, что мы сделаем, это расположим меню сразу после шапки, а для этого сначала нужно удалить его из сайдабара. Открываем файл sidebar.php, находим в нем строчку

[php]
<?php wp_list_pages(‘title_li=<h2>Pages</h2>’); ?>
[/php]

и удаляем ее

2. Теперь расположим меню ниже заголовка, для этого открываем файл header.php, и после блока “headerimg”, вставляем следующие строки:

[php]
<div id="menu">
<?php wp_list_pages(‘title_li=’) ?>
</div>
[/php]

Здесь параметр title_li=, с пустым значением, означает что меню выведется без предваряющей надписи “Стараницы”.

3. Теперь добавим стилей для нашего меню, чтобы оно выглядело соответственно общему дизайну темы, в файле style.css:

[css]
/*общий стиль блока меню*/

#menu{
height: 30px;
background: #4182b8;
margin: 5px 20px 100px 20px;
clear: both;
font-size: 14px;
}

/*стиль ссылок в меню*/

#menu li a{
color: #fff;
display: block;
line-height: 27px;
padding: 0 10px;
}

#menu li a:hover{
background: #07599d;
text-decoration: none;
}

/*стиль для элементов первого уровня, т.е. дочерних страниц*/
#menu li{
list-style: none;
float: left;
}

/*стиль для элементов дочернего меню*/
#menu li ul li{
float: none;
}

#menu ul{
background: #4182b8;
margin: 0; padding: 0;
position: absolute;
z-index: 10;
}
[/css]

После добавления стилей меню должно выглядеть примерно так:

drop-down-menu

4. Далее было бы неплохо, выделять активные страницы. В моем блоге и раньше публиковалась статья, на эту тему, правда она не затрагивала дочерних страниц. То есть фактически если мы находимся на дочерней странице, хорошо бы знать, ее родительскую страницу. Это реализуется довольно просто, с помощью CSS:

[css]
.current_page_item, .current_page_parent{
background: #07599d;
text-decoration: none;
}
[/css]

Здесь  .current_page_item – текущая активная страница (на скриншоте ниже это страница “партнерам”), .current_page_parent – это ее родительская страница.

5. Все бы хорошо, но выпадающее меню, на то и названо, чтобы появляться и исчезать, при наведении мыши, а не постоянно отображаться на экране. Поэтому для начала мы спрячем его с помощью CSS, а затем будем показывать с помощью JQuery.

[css]
/*строка display:none прячет выпадающее меню*/

#menu ul{
display: none;
background: #4182b8;
margin: 0; padding: 0;
position: absolute;
z-index: 10;
}
[/css]

Далее потребуется подключить jquery, к нашему шаблону. Это можно сделать в разделе head, до функции , файла header.php, следующей строчкой:

[javascript]
<?php wp_enqueue_script("jquery"); ?>
[/javascript]

Далее код, который позволит отображать дочернее меню, при наведении мыши:

[javascript]
<script type="text/javascript">
jQuery(document).ready(function(){

jQuery("#menu li").hover(

function(){
jQuery(this).find(‘ul’).show();
},

function(){
jQuery(this).find(‘ul’).hide();
}
);
});
</script>
[/javascript]

В принципе этого достаточно, теперь при наведении мыши к имени страницы, будет отображаться дочернее меню. Но можно пойти дальше, и добавить различные эффекты появления дочернего меню.

6.  Эффект медленного появления дочернего меню, делается очень просто, путем изменения высоты, ширины и прозрачности отображаемого блока. Пондобится просто добавить один параметр, к уже написанному коду:

[javascript]
<script type="text/javascript">
jQuery(document).ready(function(){

jQuery("#menu li").hover(

function(){
jQuery(this).find(‘ul’).show(‘slow’);
},

function(){
jQuery(this).find(‘ul’).hide();
}
);
});
</script>
[/javascript]

Можно добавить эффект появления без прозрачности, вертикальный:

[javascript]
<script type="text/javascript">
jQuery(document).ready(function(){

jQuery("#menu li").hover(

function(){
jQuery(this).find(‘ul’).slideDown();
},

function(){
jQuery(this).find(‘ul’).slideUp();
}
);
});
</script>
[/javascript]

Если возникла необходимость, отображать выпадающее меню постоянно, если дочерняя страница активна (подходит для вертикального бокового меню),  то это делается следующим образом:

[javascript]
<script type="text/javascript">
jQuery(document).ready(function(){

if(jQuery("#menu li").hasClass(‘current_page_parent’)){
jQuery("#menu li ul").show();
}

jQuery("#menu li").hover(function(){
jQuery(this).find(‘ul’).show(‘slow’);
},

function(){
if (!jQuery(this).hasClass(‘current_page_parent’)){
jQuery(this).find(‘ul’).hide();
}
}
);
});
</script>
[/javascript]

Возможно пример не слишком изящный с точки зрения программирования (если есть предложения по улучшению, с радостью исправлю), но работать будет.

Как видно, выпадающее меню под силу сделать любому пользователю, и его внешний вид полностью зависит от вашей фантазии, и знания эффектов jQuery.


Posted

in

by

Comments

122 responses to “Выпадающее меню в WordPress”

  1. goodnews Avatar

    Ну а ссылочку на пример можно сделать? 🙂

    1. dreamhelg Avatar
      dreamhelg

      Вот например: http://www.unistud.ru. Выпадающее меню сверху и сбоку

  2. олд Avatar
    олд

    как на счёт меню третьего уровня?

    1. dreamhelg Avatar
      dreamhelg

      тот же принцип работы, можно хоть 10-уровневое меню сделать

  3. goodnews Avatar

    http://www.unistud.ru/
    Вотсбоку там кстати не очень правильно сделано, помоему. А ещё такой вопрос. Я с JS и жквери в частности пока не очень знаком. Как можно сделать задержку при пропадании менюшки. Т.е. я навел на ссылку курсор, а когда убрал менюшка не сразу пропадает, а скажем через 2 секунды.

    1. dreamhelg Avatar
      dreamhelg

      Это просто пример. А для задержки меню нужно использовать таймер, для знающих ява-скрипт это не проблема, вам могу посоветовать плагин к Jquery, называется Timer

  4. goodnews Avatar

    Спасибо за совет, но думаю для этого в jQuery есть и встроенные средства. Например для JS я нашёл функцию setTimeOut() , но, к сожеланию, не разобрался как её применить.

    1. dreamhelg Avatar
      dreamhelg

      Ага, вот об этом я и говорю, таймер можно и без jquery, организовать, а этот плагин для тех кто не очень знаком с языком, или не хочет тратить время на копание.

  5. cammino Avatar
    cammino

    http://www.alexilin.ru/web/menu/nojshormenu/
    Там есть пример меню. Дык вот в первом и последнем разделах, есть подменю которое появляется сбоку. Как это реализовать?

  6. cammino Avatar
    cammino

    Ещё хотел спросить на чём реализован блок “Интересные статьи” на сайте?

  7. goodnews Avatar

    Меню там чисто на css сделано. Это очень клёво, но к сожалению не юзабельно, хотя бы даже из-за задержки в пропадании (про которую я спрашивал выше). А блок виджет «Интересные статьи» основан на плагине Popularity Contest. Он есть в оф. репозитории плагинов
    http://codex.wordpress.org/Plugins
    Можно найти и руссифицированный, но это уже сами как-нибудь 🙂

  8. goodnews Avatar

    Этот плагин подсчитывает кол-во просмотров поста, трекбеки, комменты и наверное ещё что-то. На основе этого создает статистику, которая и отвечает за популярность поста.

    Автору блога – вопрос с менюшкой остаётся открытым 😉

  9. dreamhelg Avatar
    dreamhelg

    Блок “Интересные статьи” разработан на основе плагина FeatureMe, но принцип действия его такой же как и у популярных статей. Правда в официальном репозитории я его не встретила.

  10. dreamhelg Avatar
    dreamhelg

    goodNews: какой именно вопрос остался открытым?)

  11. cammino Avatar
    cammino

    2 goodnews на CSS и бог с ним. Мне интересно как описанным тут методом сделать такое меню. Сейча выпадающиее меню выпадает только вниз. 🙂 А мне нужно чтоб в бок выпадало :0

  12. goodnews Avatar

    2 cammino
    в стилях к #menu добавь
    right:-100px; и всё будет 🙂

    2 dreamhelg
    вопрос по поводу задержки скрытия менюшки. У меня щас просто завал с работой (мы коллеги кстати), немножко разгребу и постараюсь сделать пару примеров с такими менюшками.

    1. dreamhelg Avatar
      dreamhelg

      По поводу задержки в меню, я использовала setTimeout(), но толком с ним не разобралась, потому как работу надо было сдавать быстро, поэтому планировала про него отдельную статью написать.

  13. cammino Avatar
    cammino

    2goodnews
    Так?
    position: relative; right: -100px;

    Я просто не вижу разделения в стилях для основного меню и дочерних. То есть если пропишу расположение так, то для всего меню. Или я чего-то недопонял. 🙁

  14. goodnews Avatar

    Не совсем так. Чтобы right работало нужно чтобы position:relative было присвоено родительскому блоку. Я в предыдущем комменте дал не совсем правильный совет. Извиняюсь.

    Найди в уроке вот эти строки

    #menu ul{
    display: none;
    background: #4182b8;
    margin: 0; padding: 0;
    position: absolute;
    z-index: 10;
    }

    В них указано, что менюшка будет иметь абсолютную позицию. По умолчанию это будет означать что она тупо расположится под словом меню. А нам надо чтобы она вываливалась вправо, поэтому именно ей и нужно задать правило right: -100px; и наверное ещё надо top:0;
    Т.е. по сути менять особо ничего не надо. Автор урока уже всё прописал где надо, ты просто укажи, что менюшка будет не просто находиться там где она находится а правее на 100 пикселей. Надеюсь в 7 утра я смог доступно тебе это написать 🙂 Если не разберёшься пиши в аську – 190-25-23, подмогу 🙂

  15. goodnews Avatar

    Т.е. в конечном итоге вот что должно получиться

    #menu ul{
    display:none;
    background:#4182b8;
    margin:0; padding:0;
    position:absolute;
    top:0;
    right:-100px; /* это примерно */
    z-index:10;
    }

    Сам я этот урок не опробовал ещё, поэтому не гарантирую что щас дал рабочий вариант. Что касается родительских пунктов и дочерних, то тут отдельный вопрос 🙂

  16. cammino Avatar
    cammino

    2 goodnews
    Пасибо что помогаешь.
    В результате менюга открывается справа за границей экрана.

  17. cammino Avatar
    cammino

    2 goodnews

    position:absolute;

    Всё таки relative. Мне же надо чтоб он от родительского меню открывался. А так от границы экрана. Либо расстояние высчитывать.

  18. goodnews Avatar

    Понимаешь тут какое дело… relative назначается родительским элементам. Это означает что блок (с релейтивом) способен принимать блок у которого position:absolute. Т.е. блок с position:absolute будет так же абсолютно позиционироваться, только не относительно тега html а относительно того блока, в который вложен (при этом этот блок с position:relative). Грубо говоря relative – принимающий абсолютного. Я опять лохнудся и не довёл пример до логического завершения))) Делай всё так как я показал в предыдущем комменте, но ещё добавь к #menu position:relative.
    Т.е. примерно вот так

    #menu{
    position:relative;
    height:30px;
    background:#4182b8;
    margin:5px 20px 100px 20px;
    clear:both;
    font-size:14px;
    }

    #menu ul{
    display:none;
    background:#4182b8;
    margin:0; padding:0;
    position:absolute;
    top:0;
    right:-100px; /* это примерно */
    z-index:10;
    }

    enjoy!

  19. cammino Avatar
    cammino

    Неа 🙁 Не хотит. Открывается также возле правого края. А ещё забываю спросить. При наведении на родительский элемент, открывается как меню, там и подменю, сразу. То есть вся ветка разворачивается. Ещё бы это победить.

  20. goodnews Avatar

    Ссылку давай)

  21. Евгений Avatar

    Друг, goodnews, а не пробовал ли ты в этом меню сделать так, чтобы в качестве background картинку вставить можно было?
    Простым вписыванием url в стилях не отображает.
    Идея в том, чтобы в основном меню под названием родителя лежала картинка-подложка.

    1. dreamhelg Avatar
      dreamhelg

      Для этого по-моему достаточно прописать background у элемента ul, в CSS-стилях, если картинка общая для всего меню, или у элемента a, если для кадой позиции меню нужна отдельная

  22. Евгений Avatar

    Пардон, обращение конечно к dreamhelg 🙂

  23. HunterNomad Avatar
    HunterNomad

    Жаль, что тема мульти-выпадающего меню так и не раскрыта.
    Статья толковая.
    +5

    1. dreamhelg Avatar
      dreamhelg

      спасибо, возможно, в будущих статьях вернусь к этой теме

  24. liksunov Avatar
    liksunov

    у меня выпадающее меню прячется под картинку, как сделать чтоб оно поверх вываливалось???

  25. liksunov Avatar
    liksunov

    ниже идет флеш ролик, если что…

    1. dreamhelg Avatar
      dreamhelg

      хорошо, что уточнили что ниже флеш, вот решение, которое мне помогло: http://habrahabr.ru/blogs/webdev/50334/

  26. goodnews Avatar

    в стилях пропиши
    object, embed {z-index:1;}
    #menu {z-index:2;}

    не уверен что будет работать, но попробовать можно

  27. liksunov Avatar
    liksunov

    Если я ставлю на флэш абсолютное позиционирование весь контент и футэр перемещается вверх под флэшку.

  28. liksunov Avatar
    liksunov

    все получилось, просто флэш был по корявому вставлен, даже без скрипта вот решение

  29. goodnews Avatar

    Сделай картинкой, не видно

  30. liksunov Avatar
    liksunov

    при вставке флэшки

    вставляется в object
    wmode=opaquе
    вставляется в embed

  31. liksunov Avatar
    liksunov

    да чтож такое, все что copy/paste тут не показывает?

  32. goodnews Avatar

    Делай картинкой и всё будет ок 🙂

  33. goodnews Avatar

    или ещё помоему можно в

     запихнуть, или в 
  34. goodnews Avatar

    Ага, значит тег pre работает 🙂

  35. goodnews Avatar

    Автор, сделай пожалуйста хинт с рабочими тегами. Типа раскрывающийся блок.

    1. dreamhelg Avatar
      dreamhelg

      сделаю на днях, обязательно

  36. liksunov Avatar
    liksunov

    вобщем в диве с флэшкой в тэг object вставляем PARAM NAME=wmode VALUE=opaquе, а в тег embed вставляем wmode = opaque

  37. Евгений Avatar

    To dreamhelg:
    Продолжаю с удовольствием экспериментировать с твоим выпадающим меню. Если на шаге 2 в header.php добавить вместо

    вот это:

    то рубрики тоже будут нормально выводиться в общем меню.
    Это хорошо. Не нужно лишних страниц плодить, когда очень хочется сайдбар вообще спрятать.
    Ещё раз спасибо за статью.

  38. Евгений Avatar

    Хм 🙁
    код копипасты не виден.
    в общем, если добавить ещё строчку
    то и категории тоже будут в меню отображаться

  39. Евгений Avatar

    dreamhelg, что-то не могу разобраться с 3-им уровнем… Поможешь?

    1. dreamhelg Avatar
      dreamhelg

      что именно не получается? и пример, желательно

    2. bushwinston Avatar

      инструкция на тигго скачать

    3. bushwinston Avatar

      hyundai click инструкция

  40. Евгений Avatar

    В общем, извини, если повторяюсь, просто почему-то когда пытаюсь оставить коммент, сайт навсегда зависает на белой странице, и не понятно, ушло сообщение или нет.
    Проблема вот в чём:
    http://www.xcom.ru/wordpress/
    Пункт меню – мы предлагаем.
    Там есть “серверы” и “компьютеры” – это рубрики дочерние от “мы предлагаем”
    Чтобы выпадали остальные “серверы х-сом” и . д. их пришлось тоже сделать дочками от “мы предлагаем”, потому что, когда внутри “серверы” создаёшь дочек и постишь запись туда, то выпадает только последний уровень.
    Ещё подробнее:
    создаю рубрику, к примеру, “компьютеры для офиса” внутри “Компьютеры Х-Сом” и помещаю туда запись “компьютер Х-Office Desktop”. В этом случае выпадающее меню “мы предлагаем” начинает содержать в себе только “Компьютеры Х-Сом” -> “Компьютеры для офиса”, а всё остальное пропадает из выпадающего списка.

    1. dreamhelg Avatar
      dreamhelg

      судя по описанной проблеме, очень похоже, что вызов рубрик, ограничен до второго уровня, хотелось бы увидеть как в вашем шаблоне выглядит строчка

      wp_list_categories()

      . Или еще лучше пришлите шаблон, на мыло, если неудобно на рабочем сервере показывать проблемы, я посмотрю локально

  41. zar0ku1 Avatar

    Спасибо большое, правда у меня со второго раза только эта менюшка заработала =)

  42. zar0ku1 Avatar

    есть одна проблема, при активации ЧПУ и перехода на любую страницу менюшка перестает работать… обидно… если есть время отпишите на почту, помогите пожалуйста

    1. ravvor Avatar
      ravvor

      Разобрались с проблемой? Тоже столкнулся с ней.

      1. zar0ku1 Avatar

        Да, если что стучитесь в аську, на сайте есть

  43. Дмитрий Avatar
    Дмитрий

    Пункт 5, меню спряталось, дальше тупик.
    по разному устанавливал строку и скрипт.

    1. dreamhelg Avatar
      dreamhelg

      Проблема со скриптом, покажите как делали

  44. Дмитрий Avatar
    Дмитрий

    jQuery(document).ready(function(){

    jQuery(“#menu li”).hover(

    function(){
    jQuery(this).find(‘ul’).show();
    },

    function(){
    jQuery(this).find(‘ul’).hide();
    }
    );
    });

    <meta http-equiv="Content-Type" conte

    1. dreamhelg Avatar
      dreamhelg

      Сам код правильный, а вы записали его внутри тегов script?

  45. Дмитрий Avatar

    “Ваша тема вероятно уже включает в себя функцию wp_head, так что убедитесь что вы расположили вызов функции wp_enqueue_script ДО функции wp_head. Теперь вы можете включить вызов своего собственного JQuery JavaScript-файла ПОСЛЕ функции wp_head.”
    Из предыдущей статьи.

    спс, разобрался

  46. Дмитрий Avatar

    не могу вспомнить, была ли в дефолтной теме в меню, страница”главная”, подскажите как её в сабж установить

    1. dreamhelg Avatar
      dreamhelg

      Используйте для вывода меню функцию:

      wp_page_menu('show_home=1'); (конечно же в тегах php)

      Эта функция выведет все страницы, включая главную.

  47. Дмитрий Avatar

    респект за оперативность.
    где эту функцию установить?
    спс

    1. dreamhelg Avatar
      dreamhelg

      скорее всего в файле header.php, там где у вас расположено меню, это зависит от шаблона

  48. Дмитрий Avatar

    http://mobimaster.zabor55.ru/ вот меню, в него нужно “главная” довавить , иначе переходя на страницы потом не вернуца

    1. dreamhelg Avatar
      dreamhelg

      Не пойму в чем ваша проблема, ищете строчку wp_list_pages('title_li='), и заменяете ее на wp_page_menu('show_home=1').
      Если уж совсем ничего не получится, пришлите мне вашу тему, я могу поставить сама 😉

  49. vadimus Avatar
    vadimus

    Помоги плиз вставить в WP тему выпадающее меню, а то по приведенному выше примеру не выходит каменный цветок.

  50. mse Avatar
    mse

    “есть одна проблема, при активации ЧПУ и перехода на любую страницу менюшка перестает работать… обидно… если есть время отпишите на почту, помогите пожалуйста”

    такая же проблема, как решить?

    1. dreamhelg Avatar
      dreamhelg

      в случае с неработающими ЧПУ, проблема была в неправильном подключении jquery в вордпрессе, проверьте. Подключать лучше всего вот так

  51. Elia Avatar
    Elia

    dreamhelg, подскажите, пожалуйста, по моей ситуации.

    Все сделала строго по статье, jquery подключила тоже правильно, однако столкнулась с проблемой.
    При открытии страницы меню раскрывается сразу полностью (т.е. сразу в выпадающем виде), а если наведешь (еще не кликая), то подстраницы скрываются. После этого меню, если навести мышкой, уже начинает работать правильно – при наведении выпадают подстраницы. Где я ошиблась?

    1. dreamhelg Avatar
      dreamhelg

      Очень похоже, что вы забыли скрыть выпадающее меню в CSS. Потому что прежде чем его показать, оно должно быть скрыто. Проверьте, есть ли у выпадающего меню в стилях строка:

      display: none;

  52. cepera Avatar
    cepera

    Спасибо, все работает
    стили прописал, в лисе норм отображается, а в ie дочернее меню появляется не под главным, а наползает на него
    Для ul прописал position: absolute. На вскидку не можешь предположить что не хватает?

    1. dreamhelg Avatar
      dreamhelg

      да, назначьте ul, свойство top, с размером высоты меню верхнего уровня.

  53. Ольга Avatar

    Сделала всё по порядку в пункте 3, но меню не выглядит в виде синих блоков, а отражается в виде обычных строчных ссылок. к тому же, они смещены с основной полосы вниз, и выглядят некрасиво.
    Ещё вопросы (может, проблема в этом):
    -#menu li a – это то же самое, что menu a?
    -#menu li a: hover – то же, что menu a hover?
    -у меня не было в css menu li ul li – его просто нужно было вписать?

    1. dreamhelg Avatar
      dreamhelg

      Если пункты меню выглядят как текстовые ссылки, значит вы не указали ссылкам свойство display: block. По поводу смещения то же самое, недописали что-то в CSS, если у вас не получается с вашим примером, попробуйте сначала полностью скопировать мой, возможно вам это поможет.

  54. […] WordPress — это до смешного просто! Огромное спасибо dreamhelg за свою статью. Метки: WordPress, выпадающее меню Рубрика: […]

  55. serhio Avatar
    serhio

    в эксплоере 6 не хочет работать =(
    всё рассыпается =(
    что делать?

    1. dreamhelg Avatar
      dreamhelg

      дайте ссылку, я посмотрю.

      1. serhio Avatar
        serhio

        пока на этом сайте тестим =)
        http://svoi.lufter.ru/
        спасибо большое заранее =)

        1. dreamhelg Avatar
          dreamhelg

          У меня нет под рукой нужных инструментов именно для ие6, но попробуйте назначить такие стили:

          #menu li ul li{
          display: block;
          float: none;
          }

          #menu li ul{
          display: block;
          }

          Не гарантирую, что это поможет, но нужно пробовать.

          1. serhio Avatar
            serhio

            а как же поставить у #menu li ul {display:block;} если там стоит “none”
            и ещё почему может быть такое что когда загружается страница выпадающие меню видно сразу и только после наведения курсора пропадает? спасибо большое за уделённое время=) вы моя последняя надежда

          2. dreamhelg Avatar
            dreamhelg

            Если еще не разобрались с меню, пришлите мне шаблон, я посмотрю, что можно сделать.

          3. serhio Avatar
            serhio

            спасибо большое за понимание
            вот ссылка на шаблон

          4. Joss Avatar

            Тема называется siteground-wp38 вот ссылка http://www.wordpressfiles.ru/files-view-2115.html
            Заранее благодарен

  56. Флетчер Avatar
    Флетчер

    У меня вроде бы всё получилось, НО выпадающие вкладки второго уровня у меня смещаются и раскрываются вместе с главными. Это вроде нужно прописать в стилях, но я не понял как именно. Не подскажите как быть?

    Код в header.php:


    <a href="">Главная

    Рубрики

    Архивы

    jQuery(document).ready(function(){
    jQuery("#menu li").hover(
    function(){
    jQuery(this).find('ul').slideDown();
    },
    function(){
    jQuery(this).find('ul').slideUp();
    }
    );
    });

    Код в style:

    /*общий стиль блока меню*/
    #menu{
    height: 27px;
    margin: 15px 20px 100px 60px;
    clear: both;
    font-size: 14px;
    }
    /*стиль ссылок в меню*/
    #menu li a{
    color: #fff;
    display: block;
    line-height: 27px;
    padding: 0 10px 0 10px;
    margin: 0 5px 0 5px;
    border: 1px dashed #D8EDFB;
    background: #6CBCF2;
    font-weight: bold;
    filter:alpha(opacity=80);-moz-opacity:.8;opacity:.8;
    }
    #menu li a:hover{
    background: #6CBCF2;
    text-decoration: none;
    border: 1px solid #D8EDFB;
    filter:alpha(opacity=100);-moz-opacity:1;opacity:1;
    }
    /*стиль для элементов первого уровня, т.е. дочерних страниц*/
    #menu li{
    list-style: none;
    float: left;
    }
    /*стиль для элементов дочернего меню*/
    #menu li ul li{
    float: none;
    }

    /*строка display:none прячет выпадающее меню*/
    #menu ul{
    display: none;
    margin:0;
    padding:0;
    position: absolute;
    }

    .current_page_item, .current_page_parent{
    text-decoration: none;
    }

  57. ravvor Avatar
    ravvor

    На главной меню работает отлично! Но вот при переходе на любую другую страницу меню перестает работать. Подскажите куда копать?
    Менял все как в примере. Тема travelo. Брал там http://www.free-proxy-list.info/category/russkie-temy-wordpress/strany/ руссифицированную.

    1. dreamhelg Avatar
      dreamhelg

      Я точно не помню как мы решали такую проблему, но проверьте две вещи:

      -грузится ли jquery на других страницах (можно проверить с помощью фаербага)
      -правильность подлючения jquery в wordpress, (в одной из моих статей есть пример)

    1. dreamhelg Avatar
      dreamhelg

      Это как раз то, о чем я говорила – правильное подключение jquery в wordpress

      1. ravvor Avatar
        ravvor

        Благодарю за помощь оперативность!

  58. Борис Avatar

    dreamhelg у меня такой вопрос.

    на сайте http://adoria.com.ua/ в шаблоне предусмотрена выпадающая менюшка, я добавил функцию

    #page-bar .current_page_item a, #page-bar .current_page_parent a {
    background: #b8db7c;
    }

    теперь активные страницы таким цветом как я хочу. Но ГЛАВНАЯ страница когда активна не выделяется. Что посоветуете?????

    1. dreamhelg Avatar
      dreamhelg

      Скорее всего, в вашем шаблоне главная страница не генерируется автоматически, а добавлена статикой. Для того чтобы главная страница генерировалась вместе с остальными автоматически, вам нужно использовать шаблонный тег:

      В этом случае, к главной странице также будет добавлятся класс активной страницы

      wp_page_menu('titlie_li=&show_home=1')

      1. Борис Avatar

        Спасибо большое. все получилось!!!!!!!!!!!!!!!!!

  59. lalena Avatar
    lalena

    возник такой вопрос, есть еще под-подменю, т.е. получается многоуровневое меню, как сделать так, чтобы под-подменю появляловь тогда, когда наводишь на подменю. А то все сразу раскрывается когда наводишь на подменю((

  60. Andrew Avatar
    Andrew

    Вопрос, у вас сказано что для того чтобы меню после обноления страницы не раскрывалось нужно написать “display: none;” я воткнул, а он мне отказался вообще его отображать (меню), я так и не понял почему, потом использовал другой тег “visibility: hidden;” он помог, НО на следующий день таже байда меню не хочет отображаться.
    И сразу вопрос как правильно сделать дочерние меню 3 уровня (как у вас на первой картинке).

    1. Флетчер Avatar
      Флетчер

      Решение вашей проблемы здесь – http://mywordpress.ru/support/viewtopic.php?id=13700

      Вообще в этой статье неправильно прописаны CSS отсюда и столько проблем с меню. CSS прописаны лишь до первого уровня вложенности и всё.

      1. Andrew Avatar
        Andrew

        Флетчер, я по поводу вложенности сам дорубил, а вот глюк с «display: none;» сохранился даже при вашем стиле, убираешь показывает, но раскрыто. Кто нибудь помогите, фигня какая – то.

  61. Joss Avatar

    Сделал всё по пунктам, но не работает почему-то. До пункта 5 всё было хорошо, а вот потом не фига не работает.

  62. Bzz Avatar
    Bzz

    вот спасибо большое. отличная статья 🙂

  63. Павел Данилов Avatar

    А где в настройках темы менять параметры? Допустим чтобы показывалось количество записей в каждой рубрике? (тема поддерживает) Заранее спасибо.!!

  64. Mr_Banochka Avatar

    Добрый вечер!
    Столкнулся с проблемой следующего характера: все меню выпадает как один горизонтальный столбец. Как сделать чтобы выпадал, например, квадрат из ссылок 5 на 5.
    Заранее спасибо за ответ!

  65. Евгений Avatar
    Евгений

    Спаисибо работает.
    Хотел спросить,я новичок просто,:
    как можно отрегулировать высоту дочерних елементов меню,основные у меня высокие 80px,
    а выпадающие хотел бы сделать меньше 37px.
    Я ЦСС ещё пока плохо знаю,где конкретно прописать,на вашем примере?

  66. StAss Avatar

    У меня на сайте всё получилось по вашей инструкции.:) Спасибо.:)

  67. Алексей Avatar

    Спасибо за статью! Коротко и доходчиво.

  68. Akros Avatar

    У меня не скрываются дочерние страницы, то есть меню всё время в раскрытом виде…

  69. Евгений Avatar

    Спасибо супер
    Хотел спросить:
    Когда находишся на странице второго уровня,нельзя сразу перейти на другую страницу второго уровня.Если только опять перейти на родительскую,тогда можно.
    А что и где надо дописать для того чтоб можно было сразу переходить на любой уровень?

  70. Дмитрий Avatar

    Приветствую,

    у меня не появляются дочерние ссылки.
    Подскажите что не так в коде!
    Заранее благодарен!

    Мой header.php

    <meta http-equiv="Content-Type" content="text/html; charset=” />

    jQuery(document).ready(function(){

    jQuery(“#menu li”).hover(

    function(){
    jQuery(this).find(‘ul’).show();
    },

    function(){
    jQuery(this).find(‘ul’).hide();
    }
    );
    });

    <?php
    /*
    * Print the tag based on what is being viewed.
    */
    global $page, $paged;

    wp_title( ‘|’, true, ‘right’ );

    // Add the blog name.
    bloginfo( ‘name’ );

    // Add the blog description for the home/front page.
    $site_description = get_bloginfo( ‘description’, ‘display’ );
    if ( $site_description && ( is_home() || is_front_page() ) )
    echo ” | $site_description”;

    // Add a page number if necessary:
    if ( $paged >= 2 || $page >= 2 )
    echo ‘ | ‘ . sprintf( __( ‘Page %s’), max( $paged, $page ) );

    ?>

    <link rel="stylesheet" href="” type=”text/css” media=”screen” />

  71. Sort Avatar
    Sort

    Здравствуйте! Мой вопрос такой.Не мешает ли такое меню индексации сайта поисковыми система, вот тут написано http://help.yandex.ru/webmaster/?id=1108949 что навигация через скрипты нежелательна. Есть мнение по этому поводу?

    1. dreamhelg Avatar
      dreamhelg

      Такое меню не мешает индексации, поскольку оно присутствует на странице, просто скрыто от глаз пользователя. Навигация через скрипты в данном случае означает, что переход по ссылке инициирован ява-скриптом, а не кликом пользователя по тегу a

      1. Sort Avatar
        Sort

        А ну тогда отлично. Кстати, огромное вам спасибо за материал, сидел два дня, тема у меня немного со странностями, но все реализовал благодаря вашей инструкции. Последние сомнение по этому поводу оставляла индексация сайта ПС, но если поисковик их видит, тогда все нормально.
        Добавился в RSS, буду постоянным читателем 🙂

        1. dreamhelg Avatar
          dreamhelg

          Не за что, я рада, что вам помогла моя статья.

  72. Сергей Avatar
    Сергей

    Хороший пример. У меня вопрос? В моем шаблоне нет поддержки дополнительных меню, но я их создал при помощи функции wp _ nav _ menu. Выводится он при помощи ul id=”имя меню” и к нему прикреплены CSS. Собственно вопрос: как мне вывести выпадающее меню посредством функции: wp_nav_menu&
    Вариант с функцией wp _ list _ pages не подходит, так как нет возможности туда добавить рубрики!
    В PHP и CSS особо не силен, а реализовать очень нужно!
    Заранее спасибо!

  73. Anna Avatar

    А у меня вопрос, “Это можно сделать в разделе head, до функции , файла header.php, следующей строчкой:”, до какой функции? Я чайник в этом еще, поэтому буду признательна за помощь!

  74. Иван Avatar

    Пробую сделать у себя на сайте Набережные Челны Новости – не получается, при загрузке страницы сразу раскрыто, надо мышью подводить чтобы закрылась…

  75. WarrCan Avatar

    Здравствуйте, у меня такая проблема. Тема моего сайта не поддерживает выпадающее меню. Хотелось бы создать меню в стилистике темы. Подскажите что где заменить и как связать с темой выпадающее меню. Заранее благодарю!

  76. Сосновоборск Avatar

    Чо то не получилось вывести у меня!

Leave a Reply

Your email address will not be published. Required fields are marked *