23 Июн 2013

Разный фон для страниц или рубрик

Задача. Создать уникальный фон для каждой страницы и уникальный стиль для рубрики

Решение. Чтобы понять, как нам это сделать, напомню немного о структуре WordPress. Как правило, за вывод главной страницы отвечает файл index.pxp (в некоторых шаблонах - home.php). За вывод страниц блога отвечает файл page.php, за вывод категорий (или рубрик) - файл category.php.

Обычно все стили прописаны в файле style.css, которые распространяются на все страницы нашего блога/сайта. Но иногда возникает необходимость придать страницам или рубрикам разный фон или какой-то уникальный стиль.

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

Итак, у нас есть четыре статические страницы. Наша задача - придать каждой странице уникальный фон, который одновременно служит шапкой для страницы.

Как видим, все стили в данном примере одинаковы, за исключением стиля для body и wrapper. Заблаговременно у вас должны быть подготовлены картинки для вашего фона. В блокноте Notepad++ создаем новый файл и сохраняем его как page-IDномер страницы.css.

Как узнать IDномер страницы?

Заходим в нашей админке на Страницы-Все страницы и выбираем страницу, на которой мы хотим сделать стилистические изменения. Нажимаем Изменить и в адресной строке смотрим, какой ID-номер у нашей страницы (на картинке-2)

page_id

В нашем случае, файл мы сохраняем как page-2.css. В этом файле мы прописываем только изменения. В нашем случае, мы задаем новый стиль для body и wrapper.

 body {
background: url (images/layout-bg.jpg) #FFFFFF scroll center top no-repeat;
}
#wrapper
{
background: url(images/wrapper_layout_bg1.png) #FFFFFF scroll center top no-repeat;
}

Сохраняем в той директории, где находится файл style.css . Теперь, в зависимости от темы, в файл , где есть код подключения внутренних стилей -это может быть header.php или function.php - прописать следующий код:

< !--?php if (is_page('2')) : ?-->

< !--?php endif; ?-->

Где is_page('2') - номер страницы, на которой поменяли стиль, page-2.css - созданный нами стиль для этой же страницы.

Заходим на нашу страницу ID-2 и проверяем.


Теперь будем менять стили для отдельных категорий. В этом случае наши действия будут несколько другими.

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

Как я уже упоминала, за вывод рубрик отвечает файл category.php. Как работает WordPress? При запросе на вывод рубрики сперва проверяется, существует ли файл category.php для конкретной рубрики, например, category-1.php. Если такого файла не находится, проверяется наличие файла category.php. Если же и такого файла нет, то для запрашиваемой категории WordPress будет искать файл archive.php. Если и такой файл отсутствует, то выводится файл index.php. Чтобы задать какие-то другие стили для конкретной категории, нам нужно создать такой отдельный файл для этой категории.

Сперва определяемся с ID рубрики, в которой нам нужно сделать изменения. Определяем по тому же методу, что мы делали со страницей. Открывает в блокноте файл category.php (если его нет, то index.php) и сохраняем его копию как category-IDрубрики.php. Например, category-2.php. Затем уже в этот файл вносим необходимые изменения. В моем случае, мне нужно было прописать адрес картинки в слайдере для рубрики 2.

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

Если ваша тема должна уметь еще более подробно управлять шаблоном отображения, чем тот уровень автоматического контроля, который обеспечивает иерархия шаблонов, как я писала выше, например, по категориям, вы можете использовать условные теги (Conditional Tags). Условные теги в основном проверяют, если какое-либо особое состояние верно во время исполнения вызова заданных функций, в таком случае вы можете загрузить определенный шаблон, или отобразить некоторые варианты текста на странице, в соответствии с этим состоянием.

Например, для создания различных стилей в зависимости от номера категории, код может выглядеть следующим образом:

< ?php if (is_category(9)) {
   // для постов 9 категории
   include(TEMPLATEPATH . '/single2.php');
} else {
   // для других постов
   include(TEMPLATEPATH . '/single1.php');
}
?>

Т.е. если запрашивается категория с ID-9, то для выполнения этого запроса будет открываться файл single2.php, в котором мы сделали какие-то уникальные настройки. Для постов всех остальных категорий - будет открываться файл single1.php

Или, используя объект запроса, тот же алгоритм можно реализовать по другому:

< !--?php $post = $wp_query--->post;
if ( $post->in_category('9') ) {
   include(TEMPLATEPATH . '/single2.php');
} else {
   include(TEMPLATEPATH . '/single1.php');
}
?>

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

Понравилась статья? Поделись с друзьями!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Решите задачку * Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.