Мы видели, что фреймворк Thematic обеспечивает добавление трех областей виджетов к футеру. Указанные области обернуты в блок div с идентификатором subsidiary.
Регистрация области виджетов
Первый шаг, который необходимо сделать при добавлении новой области виджетов к теме — зарегистрировать область виджетов. Регистрация области виджетов открывает простой путь к ее управлению через интерфейс панели администратора. Для того, чтобы сохранить файл functions.php в чистоте и порядке, создадим новый файл в каталоге library нашей дочерней темы; пусть он носит название widget-areas.php. Подключим созданный файл в functions.php:
include('library/widget-areas.php');
В данном файле мы разместим код, отвечающий за регистрацию и отображение требуемой нам области виджетов. Чтобы зарегистрировать область, нам необходимо вызвать функцию register_sidebar. Она принимает массив параметров, определяющих новый сайдбар:
<?php// Register the extra Footer Aside function wicked_footer_aside() { register_sidebar(array( 'name' => 'Main Footer Aside', 'id' => 'footer-aside', 'description' => __('A widget area in the footer, above the subsidiary ?asides.', 'thematic'), 'before_widget' => thematic_before_widget(), 'after_widget' => thematic_after_widget(), 'before_title' => thematic_before_title(), 'after_title' => thematic_after_title(), ) ); } add_action('init', 'wicked_footer_aside'); ?>
Массив, который передается функции register_sidebar, должен включать в себя следующие значения:
name | Название области виджетов. В нашем случае область имеет название «Main Footer Aside» |
id | Идентификатор области виджетов. Используется при добавлении области виджетов к шаблонам. В нашем примере id=»footer-aside». |
description | Описание области виджетов, включающее в себя ее функционирование или расположение. Отображается только во внутреннем интерфейсе. В нашем примере в качестве описания выступает строка “A widget-ready area in the footer, above the subsidiary asides”. |
before_widget, after_widget, before_title и after_title | Позволяют добавлять необходимую разметку до и после каждого виджета, а также до и после заголовков виджетов. Можно использовать как уже существующие в Thematic функции, так и собственную разметку. |
Теперь, когда мы зарегистрировали область виджетов и она появилась во внутреннем интерфейсе, мы можем добавлять к ней любые виджеты. Однако, если мы не вызовем область виджетов в каком-либо из шаблонов, то сколько виджетов бы мы ни добавили, они никогда не будут выведены на экран. Займемся этим в следующем подразделе.
Отображение области виджетов
Таким образом, мы зарегистрировали нашу новую область виджетов, но она пока существует лишь во внутреннем интерфейсе. Теперь, для того чтобы она появилась на экране, мы должны добавить ее в какой-либо шаблон. Разместим в файле widget-areas.php следующий код:
// Add footer Sidebar Area function add_wicked_footer_aside() { if (is_sidebar_active('footer-aside')) { echo thematic_before_widget_area('footer-aside'); dynamic_sidebar('footer-aside'); echo thematic_after_widget_area('footer-aside'); } }add_action('thematic_footer','add_wicked_footer_aside', 10);
В данном примере мы создали функцию с именем add_wicked_footer_aside, которая используется для захвата области виджетов «footer-aside» и размещения ее в самом верху футера Thematic. Условный оператор if (is_sidebar_active(‘footer-aside’)) выполняет проверку, является ли область виджетов активной (есть ли в ней какие-либо виджеты, или нет). Если пользователь добавил виджеты, то область виджетов будет отображена. После условного оператора следуют три важных строки, которые отвечают за вывод необходимой разметки:
echo thematic_before_widget_area(‘footer-aside’); — добавляет открывающую разметку для области виджетов.
dynamic_sidebar(‘footer-aside’); — функция, которая выводит на экран все виджеты, размещенные в области виджетов с указанным ID.
echo thematic_after_widget_area(‘footer-aside’); — добавляет закрывающую разметку для области виджетов.
Для того чтобы область виджетов имела ту же самую ширину, что и зона основного контента, необходимо добавить CSS стили:
#footer-aside { width: 940px; margin: 0 auto; }
Интересная статья, только вставки кода развалились.
Видимо слишком рано закрыли тег code, сразу после <?php
Спасибо, Ярослав, внесу должные корректировки.
Исправлено.
Всё делал по инструкции, выдаёт критическую ошибку
Без детальных подробностей мы ничем помочь не сможем.