Теперь, когда мы узнали, как именно WordPress работает с шаблонами, мы можем приступить к настройке нашей темы.
Стандартное представление и поведение Thematic является типично «блоговым». Конечно, в этом нет ничего плохого, однако нам хотелось бы несколько расширить область применения указанного фреймворка. В дальнейшем мы постараемся модифицировать главную страницу: уберем сайдбар, определим область, в которой будет выводиться список цитат и миниатюр для нескольких новых сообщений, а также добавим футер, в котором будет продублирован список страниц. Также мы добавим к каждой записи ссылки на биографию автора и популярные средства социального общения.
Удаление сайдбара
При работе с фреймворком темы одним из наиболее простых способов создания собственного шаблона является копирование соответствующего файла родительской темы и размещение его в директории с дочерней темой. Как мы только что видели, WordPress, пытаясь представить страницу, обращается сначала к дочерней теме, следовательно, любой шаблон, добавленный в дочернюю тему, будет переопределять эквивалентный шаблон в Thematic. Для начала мы попытаемся удалить сайдбар с главной страницы нашей темы. WordPress, пытаясь представить главную страницу, сначала проверит, определил ли администратор блога какую-либо страницу в качестве главной; если этого не было сделано, то для отображения главной страницы будет использован шаблон home.php.
В Thematic отсутствует файл шаблона home.php, однако нас вполне устроит и шаблон index.php. Скопируем index.php и поместим в папку с нашей дочерней темой, после чего переименуем его в home.php. Вот его полное содержание:
<?php// calling the header.php get_header( ); // action hook for placing content above #container thematic_abovecontainer( ); ?> <div id="container"> <?php thematic_abovecontent( ); ?> <div id="content"> <?php // create the navigation above the content thematic_navigation_above( ); // calling the widget area 'index-top' get_sidebar('index-top'); // action hook for placing content above the index loop thematic_above_indexloop( ); // action hook creating the index loop thematic_indexloop( ); // action hook for placing content below the index loop thematic_below_indexloop( ); // calling the widget area 'index-bottom' get_sidebar( 'index-bottom' ); // create the navigation below the content thematic_navigation_below( ); ? > </div><!-- #content --> <?php thematic_belowcontent(); ?> </div><!-- #container --> <?php // action hook for placing content below #container thematic_belowcontainer(); // calling the standard sidebar thematic_sidebar(); // calling footer.php get_footer(); ?>
Вы ожидали увидеть здесь кучу HTML-кода, фигурных скобок и if-конструкций? Все, что мы имеем, это несколько div элементов и большое количество PHP функций. Причина такого упрощения заключается в том, что шаблоны Thematic обладают высокой модульностью — папка extensions содержит все необходимое для совершения различных действий. В дальнейшем мы рассмотрим, что делает каждая из функций; сейчас же постараемся выполнить поставленную перед нами задачу, а именно ликвидацию сайдбара.
Изучая наш шаблон, можно увидеть, что сайдбар загружается в следующем участке:
// calling the standard sidebar thematic_sidebar();
Удалим этот участок кода (или закомментируем).
Теперь нам необходимо сделать так, чтобы основной контент занимал всю ширину страницы. Реализовать это позволяют CSS стили. В качестве примера мы возьмем таблицы стилей фреймворка Thematic. Селекторы #container и #content, каждый из которых определяет интересующую нас ширину, применяются к блокам div. Как мы узнали из предыдущей главы, Thematic загружает к элементу body набор различных классов, один из которых отвечает за определение главной страницы (#home). Сделаем так, чтобы блоки div с идентификаторами #container и #content имели нужную нам ширину в том случае, если они расположены на главной странице (т.е. если они имеют класс home). Чтобы выполнить это, достаточно просто добавить следующие стили в файл style.css:
/* =Homepage specific styles -------------------------------------------------------------- */ body.home #container { float: none; margin: 0; width: 960px; } body.home #content { width: 900px; overflow: hidden; margin: 0 0 0 10px; } body.home .hentry { width: inherit; }
Теперь, откройте свой браузер и посмотрите на представление главной страницы — контент будет занимать всю ее ширину. Если вы переместитесь на любую другую страницу, то увидите, что традиционное представление не изменилось — сайдбар, как и базовая ширина контента остались нетронутыми.
Довольно просто, не правда ли? Данный пример еще раз иллюстрирует тот факт, что родительская тема, в отличие от дочерней, должна всегда оставаться неизменной. Такой подход гарантирует вам прозрачное и быстрое редактирование кода на любом этапе создания собственного проекта.
"следовательно, любой шаблон, добавленный в дочернюю тему, будет переопределять эквивалентный шаблон в Thematic" — перефразируйте более понятно пжлста
Шаблоны, присутствующие в дочерней теме, являются приоритетными по сравнению с теми же самыми шаблонами в родительской теме. То есть, если шаблон, скажем, home.php есть в родительской теме и в дочерней, то он будет взят из дочерней темы, т.е. переопределит существующий шаблон родительской темы.