Задаем дополнительный sidebar для отдельных рубрик

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

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

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

Представьте, что на моем блоге поисковый робот обнаруживает десяток внешних ссылок, направляется по ним, а на тех ресурсах так же  не меньшее число ссылок на сторонние сайты. И что может случиться с новичком, верно — прямое попадание под АГС.

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

И в тоже время рекламные баннеры стоит размещать.

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

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

Что я имею в виду, спросите вы?

Например, на главной странице в Sidebar1 (или левом) я хочу установить одну рекламу.

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

Как это сделать?

Я признаться не мастер по шаблонам WordPress, не программист и не верстальщик, сама такой вопрос решить не могла. Благо, что прошедшей осенью я нашла в Рунете два интересных блога про шаблоны для WordPress, автор которых прекрасно разбирается во всех тонкостях. Не долго думая, написала ему письмо через форму «Контакты». Ответ пришел в этот же день, в котором Олег, согласился помочь в моем вопросе и опубликовать обучающую статью на своем блоге.

На другой день шикарная и максимально понятная статья была готова.

Я приступила к практическому изучению и применению на тестовом блоге localhost. Установила тему, которая в данное время активная и вы её наблюдаете, добавила несколько записей, соответственно создала новые рубрики, которые вынесла в сайдбар.

Продолжаю читать обучающую статью «Как сделать свой шаблон для блога интересней» от Олега:

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

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

Есть ряд файлов, которые словно пазл, собираются вместе и мы видим наши страницы сайта. Я говорю о файлах: index.php, header.php, sidebar.php, footer.php. Эти четыре файла практически всегда присутствуют на страницах нашего сайта. Остальные файлы – это рабочие элементы, которые сайт на Вордпресс использует для вывода того или иного контента.

Пользователь зашел на сайт и решил посмотреть одну конкретную рубрику, назовем ее Новости. У этой рубрики есть свой уникальный номер, который принято называть ID. Пусть этот ID равен 5.

Цель для меня поставлена: мне нужно для рубрики «Музыка Италии» сделать отдельный сайдбар.

Тут же замечу, что сайдбаров в моем случае два: левый (1)  и правый (2). Изменять ли их оба, либо какой-то один, — реально сделать оба варианта. 🙂

Для начала своего обучения я изменяю вывод правого сайдбара (2). У меня должно получиться: один левый и два правых, при этом второй правый sidebar выводится ТОЛЬКО для одной рубрики.

Этап первый. Создаю еще один sidebar.php. Никакого нового кода для этого не понадобится, достаточно скопировать имеющийся  код файла sidebar.php в блокнот, и при сохранении дать ему название sidebar2.php.

Этап второй. На начальном этапе в моем шаблоне 2 динамических сайдбара, мне же нужно три (об этом я писала абзацем выше). За подключение виджетов в шаблоне WP ответственен файл function.php

Вот такой код вывода сайдбаров:

[php]if ( function_exists(‘register_sidebar’) ) {
register_sidebar(array(
‘before_widget’ => ‘
<li id="%1$s">’,
‘after_widget’ => ‘</li>
‘,
‘before_title’ => ‘
<h2>’,
‘after_title’ => ‘</h2>
‘,
));
}
[/php]

Далее я добавляю функцию вывода третьего сайдбара. Обратите внимание, что сделать это абсолютно не сложно. Достаточно скопировать одну часть, ответственную за подключение сайдбара. Части одинаковые! Я меняю добавляю  цифру рядом с Sidebar 3.

[php]
if ( function_exists(‘register_sidebar’) ) {
register_sidebar(array(
‘name’ => ‘Sidebar 1’,
‘before_widget’ => ‘<li id="%1$s">’,
‘after_widget’ => ‘</li>’,
‘before_title’ => ‘<h2>’,
‘after_title’ => ‘</h2>’,
));

register_sidebar(
array(
‘name’ => ‘Sidebar 2’,
‘before_widget’ => ‘<li id="%1$s">’,
‘after_widget’ => ‘</li>’,
‘before_title’ => ‘<h2>’,
‘after_title’ => ‘</h2>’,
));

register_sidebar(
array(
‘name’ => ‘Sidebar 3’,
‘before_widget’ => ‘<li id="%1$s">’,
‘after_widget’ => ‘</li>’,
‘before_title’ => ‘<h2>’,
‘after_title’ => ‘</h2>’,
));
}

[/php]

Перезагружаю, и захожу в админку вордпресса, во Внешний вид=>Виджеты. И вижу, что третий сайдбар благополучно добавился.

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

То есть две функции в файле шаблона sidebar.php я оставляю неизменными, а точнее:

подключение первого сайдбара:

[php]
if ( !function_exists(‘dynamic_sidebar’) || !dynamic_sidebar(1) ) : ?>
[/php]

подключение второго сайдбара:

[php]
if ( !function_exists(‘dynamic_sidebar’) || !dynamic_sidebar(2) ) : ?>
[/php]

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

Основные изменения надо сделать в файле sidebar2.php

Помните, я писала, что хочу второй сайдбар, заменить третьим для вывода в заданной рубрике. (для всех остальных рубрик  и страниц будут выводиться оба первых сайдбара (1) и (2).

Так вот, в файле sidebar2.php я меняю:

[php]
if ( !function_exists(‘dynamic_sidebar’) || !dynamic_sidebar(2) ) : ?>
[/php]

на:

[php]
if ( !function_exists(‘dynamic_sidebar’) || !dynamic_sidebar(3) ) : ?>
[/php]

Что изменилось? Верно, только цифра только что созданного дополнительного сайдбара.

Этап четвертый.

Основная задача — подключить дополнительный третий сайдбар (3) для определенной рубрики. Рубрики выводится с помощью файла archive.php

Вот его и будем изменять.

Открываю файл и ищу строку вывода сайбара. Она практически в самом конце кода. Не пишу номер строки, так как они могут отличаться. Приблизительно 72, 75

вот эта строка отвечает за вывод:

[php]
<?php get_sidebar(); ?>
[/php]

Изначально в моем шаблоне было 2 сайдбара, теперь их три. И при этом Sidebar 3 должен выводиться вместо Sidebar 2 при просмотре заданной рубрики. А изменения для этого были сделаны в созданном файле sidebar2.php

Определяю номер моей рубрики (достаточно подвести мышку на ссылку рубрики, и посмотреть внизу браузера,например cat=5).

Заменяю, указанную выше строку на код:

[php]
< ?php
if ( is_category(‘5’) ) {
include ‘sidebar2.php’;
}  else {
include ‘sidebar.php’;
}
?>
[/php]

Расшифрую: если вызывается рубрика (категория 5), то задействовать файл sidebar2.php ; остальные рубрики — выводить сайдбары из файла sidebar.php

Это понятно?

Этап пятый: Проверка. Самый интересный и ответственный момент, во время которого я проверю, действительно ли поставленная мной цель: выводить дополнительный сайдбар только для конкретной рубрики теперь достигнута.

Захожу в Консоль управления=>Внешний вид=>Виджеты

В Sidebar2 добаdляю текстовый виджет с текстом:  Это запись для главной страницы

В Sidebar3 добавляю текстовый виджет с текстом: Это запись для рубрики Музыка Италии



Сохраняю.

Вхожу на сам блог. Главная страница красуется надписью в правом сайдбаре:

Перехожу в рубрику Музыка Италии: правый сайдбар содержит надпись, предназначенную именно для неё.

Эврика, заработало!!!!

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

Следуете пошагово с самого первого этапа, создаете файлы sidebar3.php, sidebar4.php, sidebar5.php, добавляем дополнительные сайдбары в function.php (так же, как я добавляла третий), редактируете в нужном файле sidebar.php числовой номер сайдбара.

В файле archive.php функция будет более расширена, например:

[php]
<?php
if ( is_category(‘5’) ) {
include ‘sidebar2.php’;
} elseif ( is_category( ‘6’ ) ) {
include ‘sidebar3.php’;
} elseif ( is_category( ‘7’ ) ) {
include ‘sidebar4.php’;
}  else {
include ‘sidebar.php’;
}
[/php]

Итак, на тестовом шаблоне эксперимент прошел удачно! Скоро сделаю и для Блоггер-профи.

Задаем дополнительный sidebar для отдельных рубрик: 12 комментариев

  1. Интересная статья!
    У автора получается всё достаточно просто, жду наглядного подтверждения создания таких сайдбаров.
    Однако, какая захватывающая и обширная тема изменение шаблонов WordPress.

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

  3. Кристина, а вы попробуйте вначале, как я на Denwer, то есть непосредственно у себя на компьютере. А тема действительно очень интересная, ведь так можно значительно расширить возможности шаблона

  4. Спасибо за отличную статью. Однозначно — в закладки. На выходных обязательно проверю результат сам. Как раз работаю сейчас над еще одним блогом. Думаю, очень даже пригодится.

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

  6. Сейчас не могу определить, как побороть. На праздники посмотрю.

  7. Спасибо! Уже разобрался. Для того, чтобы вызывался правильный сайдбар для постов, код его вызова также нужно поместить в файл single (помимо archive).

  8. Благодаря вашей статье сделал несколько садбаров. Теперь при заходе в определенную категорию появляется нужный мне сайдбар. Спасибо

  9. Отличная статья, так держать. Буду следить за вами.

  10. Здравствуйте
    А как такая куча сайдбаров отражается на скорости загрузки?
    Хочется сделать, но начитался тут про то, что скорость загрузки важна для индексации…

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

Обсуждение закрыто.