понедельник, 10 декабря 2012 г.

Произвольное меню

Тем из вас, кто давно пользуется системой управления контентом (CMS) WordPress эту статью можно не читать. Наверняка, вы уже знаете, что начиная с версии WordPress 3.0, в этой системе управления сайтом появилась возможность создания Произвольного меню.
Однако, чаще всего ко мне в Коллекцию бесплатных шаблонов WordPress заходят “новички”, которые только вчера скачали и установили себе на компьютер или на удаленный сервер этот движок и еще много не знают. А столкнувшись с возможностью создания произвольного меню, начинаю рыскать в Сети в писках ответа или подробного, с картинками, описания этой функции.

Справка самого WordPress очень маленькая на эту тему, да и не все знают о ее существовании.
Поэтому, учитывая все эти моменты, я решил подробно, пошагово, с картинками, рассказать о реализации такой функции как создания Произвольного меню WordPress.
С чего стоит начать?
Давайте представим себе типичный случай: вы скачали шаблон WordPress, но не знаете – имеет он возможность создания произвольного меню или нет. Еще до установки и активации шаблона вы можете это выяснить. Как?
Откройте файл functions.php шаблона. Обычно авторы-разработчики шаблонов почти в самом начале пишут необходимый код, который активирует эту функции в их шаблонах WordPress. Функция чаще всего выглядит так:
register_nav_menus(array(‘primary’ => __( ‘Primary’ ), ‘secondary’ => __( ‘Secondary’ )));
Это – стандартная дефолтная функция WordPress. В ней активируется возможность создания двух вариантов меню – первичное (Primary) и вторичное (Secondary).
Часто бывает только первичное.
Многие авторы шаблонов, когда пишут код в файле functions.php шаблона, поступают очень грамонто. Они отделяют каждую добавленную функцию специальными комментариями, и тогда становится гораздо легче понять, какой “хук” добавил автор в файл функций шаблона.
Например, я сегодня переводил премиум-шаблон Boldpress от Templatepanic для своего второго каталога бесплатных шаблонов и плагинов WordPress. В этом шаблоне автор выделил свой вариант кода добавления произвольного меню. Выглядит он у него так:
/* WordPress 3.0 Menu Editor ********************************************/
// add menu support and fallback menu if menu doesn’t exist
add_action(‘init’, ‘wpj_register_menu’);
function wpj_register_menu() {
if (function_exists(‘register_nav_menu’)) {
register_nav_menu(‘wpj-top-menu’, __(‘Top Menu’));
register_nav_menu(‘wpj-navigation’, __(‘Navigation’));
}
}
Текст в начале, закрытый слешами, это и есть комментарий к функции. Глядя на этот код, можно с уверенностью сказать, что автор внедрил в шаблон два варианта Произвольного меню: Top Menu, Navigation.
Функция вызова произвольного меню чаще всего находится в файле header.php, который выводит Заголовок страницы сайта и не меняется при переходе с одной страницы на другую (хотя бывают и исключения из общего правила). Выглядит стандартная функция вывода в файле header.php так:
<?php wp_nav_menu( array( ‘theme_location’ => ‘primary’,’fallback_cb’=> » ) ); ?>
Замените слово primary на secondary – и эта функция вызовет ваше вторичное меню.
В авторских шаблонах эта функция может выглядеть немного иначе. Например, в приведенном выше примере шаблона Boldpress автор применил такую функцию вывода произвольного меню – Top Menu:
<?php
if (function_exists(‘wp_nav_menu’)) {
wp_nav_menu(array(‘container’ => », ‘theme_location’ => ‘wpj-top-menu’, ‘fallback_cb’ => ‘wpj_default_menu’));
}
else {
wpj_default_menu();сtulf
}
?>
Умея читать файлы шаблона, вы еще до активации шаблона в Консоли администратора WordPress – сайта можете выяснить, поддерживает шаблон Произвольное меню или нет.
Если читать файлы у вас не получается, тогда попробуйте другой вариант.
Загрузите шаблон в директорию wp-content/themes. Активируйте шаблон на странице Темы в разделе Внешний вид. После этого зайдите на страницу Меню в этом же разделе. Если тема не поддерживает Произвольное меню, вы скорее всего не увидите страницы Меню в разделе Внешний вид, или, если увидите, то зайдя на эту страницу, увидите сообщение:
Текущая тема не поддерживает создание меню, однако вы можете использовать виджет «Произвольное меню», чтобы добавить любое из созданных здесь меню в боковую колонку темы.
Если такого сообщения нет, вероятнее всего, шаблон поддерживает создание Произвольного меню. Давайте проверим:
8
В верхнем правом углу есть ярлык: Помощь. Нажмите и перед вами откроется вкладка справочного материала. Его здесь немного, но есть. Справочный материал по ссылке – Документация по меню – приведет вас на официальный сайт wordpress.org, и справку вы увидите на английском языке. Другая ссылка приведет вас на форум русской техподдержки. Будут вопросы – сможете их здесь задать, практически всегда получите ответ.
Ну, а я попробую вам рассказать, как все-таки создать Произвольное меню. Следите:
Шаг первый. Поставьте курсор в строку рядом с словами – Заголовок меню. Напишите, например: Главное меню. После этого нажмите на кнопку справа – Создать меню.
9
У нас появилась вкладка с именем – Главное меню.
Шаг второй. Если шаблон поддерживает два произвольных меню, вы сразу можете создать второе меню. Нажмите на вклдку с плюсом рядом с вкладкой Главное меню. Откроется новая пустая вкладка. Напишите в поле – Заголовок меню, название меню, например: Рубрики. Затем нажмите кнопку справа – Создать меню.
10
Теперь у нас есть два Произвольных меню. Слева, под словами Области темы, есть предложение: Ваша тема поддерживает 2 меню… и т.д. Значит, мы все правильно сделали: два произвольных меню.
Теперь давайте представим, что Главное меню – это меню сраниц, а меню Рубрики будет, соответственно, выводить только наши рубрики сайта.
Шаг третий. Слева в двух выпадающих списках секции Области темы выберите для главного меню созданную вкладку – Главное меню, а для второго меню – вкладку Рубрики. Затем нажмите кнопку – Сохранить.
11
Шаг четвертый. Нажмите на вкладку – Главное меню. Слева найдите секцию – Произвольные ссылки. Над надо сделать ссылку на главную страницу и назвать ее – Главная. В поле URL укажите полную ссылку на свой сайт (если на локальном сервере, пишите так – http://localhost/имя_папки_сайта). В следующем окне напишите – Главная. Нажмите кнопку – Добавить в меню.
Затем в следующей секции – Страницы – выберите галочкой те страницы, которые вы хотите добавить в Главное меню. Нажмите – Добавить в меню. У вас получится примерно так:
12
Здесь есть одна фишка: вы можете перетаскивать страницы и менять их местами, а также сделать многоуровневые страницы, просто подвинув страницу на один уровень вправо. После того, как меню создано, нажмите на кнопку – Сохранить меню.
Шаг четвертый. Нажмите на заголовок вкладки Рубрики. Выберите с помощью галочки все рубрики и нажмите – Добавить в меню. У вас получится список рубрик в меню Рубрики. Перетаскиванием вы можете их расположить в нужной вам последовательности, а также перетаскивая чуть вправо, сделать вложенные рубрики одна в одну. Пробуйте. Может получится примерно так:
13
Если что-то упустил – спрашивайте в комментариях.

8 комментариев на записьОтправить ваши

  1. У меня есть главное меню и подменю. Например как у вас «Рубрика2″ и «Подрубрика». Но как сделать так что бы на страницу «рубрика2″ нельзя было зайти. Т.е. когда я нажимаю на «рубрика 2″, я могу зайти на эту страницу, она пустая. Как здеть так что бы она была в списке меню, но зайти туда нельзя.

    • Зачем ставить в меню ссылку, по которой посетителю нельзя зайти?
      Вариант решения может быть примерно таким. Если вы создали рубрику и поставили на нее ссылку в меню, но хотите, чтобы посетитель не увидел этой рубрики, сделайте так:
      1. Скопируйте файл index.php или page.php и дайте ему имя — category-X.php, где X — ID вашей рубрики.
      2. В файле category-X.php вместо вывода контента вставьте свой текст, например: «Уважаемые читатели. Рубрика такая-то закрыта от просмотра, потому что бла-бла-бла…».

  2. Здорово,даже я чайник, с трудом, но наконец-то все выполнила. Спасибо большое мастеру!

  3. Алоха!
    Вопрос на засыпку! Есть меню, есть пункт первого уровня и у него подпункты второго уровня. Как сделать так, чтобы подпункты второго уровня становились видными в меню только после перехода на их родительский пункт первого уровня?
    То есть перешел в раздел и раскрылся список его подразделов, а не так, чтобы он постоянно был виден изначально.

    • А он не должен быть виден изначально. Вероятно, это проблемы вашего шаблона.

  4. А реализовать чтоб подрубрики сворачивались как-то можно?

    • Вопрос не совсем корректный. Если используется скрипт типа Lavalamp — он позволяет плавно открывать и закрывать подрубрики, на HTML плавно не получится. Все, что «плавно» — это скрипты, написанные на языке Javascript

  5. Очень нужная тема. Как раз только начинаю изучать вордпресс. Спасибо.

Комментариев нет:

Отправить комментарий