Главная - Без рубрики - Как сделать новый сайдбар с поддержкой виджетов

Как сделать новый сайдбар с поддержкой виджетов

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

Эта публикация —  двенадцатая по счету. Постепенно я приближаюсь к окончанию серии. Как только я ее закончу — создам на основе этой серии короткую книгу или PDF — файл, чтобы те посетители, кто придет впервые ко мне на сайт, смогли сразу скачать и прочесть, а не «тыкаться» в поисках всех страниц этой серии.

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

Сегодня мой рассказ продолжится с описания файла 404.php. откройте его в редакторе Notepad ++ (или любом другом с подсветкой синтаксиса). Он короткий и в нем сразу все видно:

<?php get_header(); ?>
<div id=»container»>
<h2>Ooops: 404 page</h2><br />
The page you are looking for cannot be found. Please <b>contact</b> the author so that he can fix the problem.
In the meantime you might want to browse through this blog via
<b><a href=»<?php bloginfo(‘url’); ?>»>main page</a></b> to find latest posts. <br /><br /> Sorry for the inconvenience.
</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>

Первая строка, и две последние — это функции вызова заголовка, сайдбара и подвала (файлов header.php, sibar.php, footer.php).
Затем открывается див container, и в нем выводится короткое сообщение с заголовком.
Текст звучит примерно так:

Упс. Страница 404

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

Вы можете сделать перевод по-своему, если вам не нравится мой беглый.

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

Следующий файл, который я сейчас рассмотрю — function.php. В этом шаблоне нет страницы настроек, поэтому этот файл мне и вам интересен может быть только одной функцией. Многие из вас еще не знают, как выглядит функция активации динамичных виджетов в сайдбаре. В этом файле одна первая, смотрите:

<?php if ( function_exists(‘register_sidebars’)) register_sidebars(2); ?>

Откройте файл lsidebar.php, вот его код:

<ul>
<?php if ( function_exists(‘dynamic_sidebar’) && dynamic_sidebar(1) ) : else : ?>
<li>
<h2><?php _e(‘Рубрики’); ?></h2>
<ul>
<?php wp_list_cats(‘sort_column=name&optioncount=1&hierarchical=1’); ?>
</ul>
</li>
<?php wp_list_pages(‘depth=3&title_li=<h2>Страницы</h2>’); ?>
<?php get_links_list(); ?>
<?php endif; ?>
</ul>

А теперь — внимательно читаем.
В файле function.php функция, которую я показал, активирует динамичные виджеты в сайдбаре. Если ее удалить — вы не сможете пользоваться странице Виджеты в разделе Дизайн (Внешний вид).
В левом сайдбаре (код выше) начало кода вывода динамичных виджетов — строка 2. Конец кода вывода динамичных виджетов — строка 14. Все, что лежит между строками 2 и 14 — это виджеты по умолчанию, код которых написал автор шаблона.
В шаблоне есть файл сайдбара вверху, широкого, в котором выводится приветствие. Файл под именем sidebar_top.php. Откроем его:

<h4>Обо мне</h4>
Добро пожаловать всем, кто сейчас читает этот короткий текст. Спасибо, что нашли время и посетили мой блог,
в котором я пишу обо всем, но больше всего — о своей работе в качестве профессионального блоггера.<br /><br />
<h4>Подписаться</h4>

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

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

В функции активации вывода динамичных виджетов (смотрите выше), которую я показал вам из файла function.php, есть цифра — 2. Она как раз и говорит нам о том, что в шаблоне — два сайдбара.

Давайте поэкспериментируем. Заменим число 2 на три. Сохраним файл function.php. Перегрузим (F5) страницу Виджеты. Смотрим:

Видите? У нас теперь есть три сайдбара с динамичными виджетами. Но! Мы создали только панель длядобавления виджетов в шаблоне. А теперь надо сделать так, чтобы в файле сайдбара тоже добавлялись динамичные виджеты. Откроем файл sidebar_top.php и добавим функцию подключения динамичных виджетов, сразу после нашего текста приветствия и ссылки на подписку. Получится вот так:

<h4>Обо мне</h4> Добро пожаловать всем, кто сейчас читает этот короткий текст. Спасибо, что нашли время и посетили мой блог, в котором я пишу обо всем, но больше всего — о своей работе в качестве профессионального блоггера.<br /><br />
<h4>Подписаться</h4>
Вы можете следить за новыми публикациями в моем блоге очень просто: подпишитесь на RSS ленту и читайте одним из первых все мои новые статьи на тему блоггинга, WordPress, заработка в Интернет и многое другое.
<ul>
<?php if ( function_exists(‘dynamic_sidebar’) && dynamic_sidebar(3) ) : else : ?> <?php endif; ?>
</ul>

Обратите внимание. Я вставил функцию вывода динамичных виджетов, в скобках указал число 3 — это наш новый сайдбар, он третий по счету (было два). Также добавил теги HTML для корректного отображения списка, как в других файлах сайдабаров (правом и левом).
Теперь вы можете для примера вставить виджет в новый созданный сайдбар вверху страницы и посмотреть что получилось. Я для быстрого примера добавил виджет «Облака меток». Смотрим:

У нас верхний широкий сайдбар стал поддерживать вывод динамичных виджетов.

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

Надеюсь, что кто-то из вас найдет для себя эту публикацию полезной.

Всем успехов!


 

www.imperia-kaminov.ru — Вы хотите иметь в своей квартире или доме (даче) современный камин? Компания «Империя каминов» и ее интернет-магазин рады вас видеть на своем сайте. Выбирайте лучшее.

О admin

15 комментариев

  1. Огромное спасибо!

  2. Спасибо, очень пригодилось
    Будте так добры дополнить маленьким уроком по созданию отдельных шаблонов для страниц

    • Спасибо за подсказку темы для обзора, обязательно сделаю несколько примеров.

  3. Людмила

    Можно ли так сделать активным сайдбар, в моей теме? В одном сайдбаре находятся окно поиска и рубрики, заложены автором. Я хочу использовать место под рубриками для установки виджетов. Хотя бы облако меток переставить. Сколько не пыталась — не получается.Опыта нет, сайту всего третий месяц.

    • У каждого шаблона — свои свойства и функции, поэтому чтобы знать как у вас, надо видеть шаблон. Скиньте мне его архивом на skininforu@gmail.com, я посмотрю и сделаю вам сайдбар

  4. Наталья

    На странице «виджеты» у меня много сайдбаров но активный один («Primary Widget Area» — левый). Хочу иметь еще правый, а в «Secondary Widget Area» написано (This sidebar is active only on a 3 column setup.)
    Смотрела файл sidebar_top.php у меня все по другому.
    Посмотрите пожалуйста. Файл *.htm высылаю на вашу почту.

    • У вас шаблон не с моего каталога — спрашивайте у автора шаблона, почему вы считаете, что взяв с другого каталога шаблон, можете у меня спрашивать как его модифицировать.
      Я не в состоянии всем бесплатно помогать совершенствовать их сайты, специально пишу много и даю разные советы и инструкции, вам остается внимательно читать и делать.
      А написано у вас то, что «второй сайдбар может быть активен только если в шаблоне 3 колонки».
      У вас — две. Так чем я должен вам помочь?

  5. Константин

    Благодарю за пост, очень помог разобраться с виджетами.

  6. Анатолий

    Спасибо за статью. Полностью ещё в неё не вникал, но сразу вижу, это то что мне надо, и вроде бы написано структурировано и понятно, т.е. при написании статьи автором был соблюдён принцип «Зри в корень». Спасибо.

  7. ой спасибо! очень полезный урок! долго искала толковое изложение проблемы

  8. Андрей

    Спасибо, пост выручил, все внятно и понятно!!!

  9. Александр

    Здравствуйте.
    Подскажите пожалуйста для чего в файле functions.php нужна функция?:
    [php]&lt;?php
    function _check_isactive_widgets()[/php]

    • По маленькому куску кода мне сложно вам ответить точно.
      Этот тег PHP говорит о проверке, включен ли конкретный виджет со стороны читателя (front-end) и если включен, должен выполняться какой-то условный фильтр.

  10. Спасибо, Вы мне очень помогли.

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

Ваш email нигде не будет показанОбязательные для заполнения поля помечены *

*