Плагин WP-Style
Плагин,
практически не имеющий альтернативы, если Вы собираетесь создавать
что-либо сложное на базе движка Wordpress. Нехитрый алгоритм позволяет
создавать вложенную систему php-шаблонов для семейств категорий,
записей, принадлежащих к определенной категории или ветке категорий.
Все с учетом потенциальной вложенности, сложности и иерархии.
Предназначен для вывода сложных и разнообразних типов информации,
хранящихся в базе Wordpress. Позволяет сконструировать сколь угодно
уникальные шаблоны в рамках одной темы, например, общий шаблон для всех
подкатегорий данной категории, для конкретной записи, для всех записей
данной категории или ее подкатегориии. И т.д. и т.п.
Необходимость написания данного плагина диктовалась простым фактом:
в Wordpress заложена возможность писать уникальные шаблоны только для
конкретной категории. Например, можно создать шаблон с именем category-16.php,
и тогда категория с ID номер 16 будет выводиться именно этим шаблоном.
Также существует возможность задать специфический шаблон для
статической страницы, причем этот шаблон можно использовать для разных
статических страниц. Есть еще тривиальный пример из англоязычного
кодекса по созданию плагина, позволяющего назначать номерной
(аналогичный механизму категорий) шаблон для обычных постов (записей).
Все это меня не удовлетворило. Захотелось иметь некую универсальную,
быстро работающую и легко запоминаемую модель иерархии шаблонов, чем-то
напоминающую иерархию CSS стилей. Для лучшей читаемости вместно номеров
категорий в плагине применяются их "короткие имена" (slugs, short
names, nicenames). Плагин быстр и не делает никаких запросов к базе.
Никаких настроек не требует.
Для понимания работы плагина привожу практически полную схему
предлагаемой новой иерархии шаблонов в случае двухуровневой иерархии
категорий.
Категории. Пусть "firstlevel" - короткое имя
"верхней" категории, "secondlevel" - короткое имя ее дочерней категории
с номером (ID) 34. И пусть мы сделали запрос на вывод записей категории
"secondlevel". Тогда Wp-Style ищет шаблон для вывода этой категории в
следующем порядке:
- category-34.php (работа самого WP без всяких плагинов), далее, если не найдено
- catstyle-secondlevel.php, далее, если не найдено
- catstyle-firstlevel.php (идем вверх по иерархии), далее, если не найдено...
- ... больше уровней, если они есть; далее, если не найдено
- category.php, archieve.php (работа самого WP без всяких плагинов)
Например, если вы имеете структуру категорий:
| http://mysite/ | allcats/ (id=7) | redcats/ (id=44) |
| greencats/ (id=45) | ||
| bluecats/ (id=46) |
Чтобы создать уникальный шаблон для категории "redcats", создайте
файл в Вашей теме с именем category-44.php или catstyle-redcats.php.
Чтобы создать общий шаблон для "allcats" и всех дочерних "...cats",
создайте файл catstyle-allcats.php. При этом, если Вы создали ранее
catstyle-redcats.php или category-44.php, то эта категория будет
использовать именно этот свой уникальный шаблон. А ежели Вы еще хотите,
чтобы материнская категория "allcats" тоже имела свой уникальный
шаблон, то создайте файл соответственно category-7.php.
Иерархия шаблонов для "записей" (singles) построена совершенно
аналогично. Только меняется префикс шаблонов с "catstyle" на
"sinstyle".
Записи (только singles = posts, не относится к
статическим страницам pages). Пусть "firstlevel" - короткое имя
"верхней" категории, "secondlevel" - короткое имя ее дочерней
категории. И пусть запись (post) с ID (номером) 79 относится к
категории "secondlevel". И вот мы запросили вывод этой 79-й записи.
Тогда Wp-Style ищет шаблон для вывода данной записи в следующем порядке:
- sinstyle-79.php, далее, если не найдено
- sinstyle-secondlevel.php, далее, если не найдено
- sinstyle-firstlevel.php, далее, если не найдено
- ... больше уровней, если они есть; далее, если не найдено
- single.php (работа самого WP без всяких плагинов)
Вернемся к ранее предложенному примеру иерархии с разноцветными
котами. Чтобы создать шаблон для всх записей категории "allcats" и ее
подкатегорий любого уровня вложенности, пишем шаблон с именем
sinstyle-allcats.php. Чтобы при этом записи из категории "redcats"
выводились отдельным шаблоном, пишем файл sinstyle-redcats.php. А чтобы
при всем этом запись с номером 567, относящаяся к неважно какой
категории выводилась своим уникальным шаблоном, пишем файл
sinstyle-567.php.
Следует заметить, что описание работы и использования плагина
существенно превышает по размерам сам плагин... Тем не менее, для
уменьшения путаницы в шаблонах плагином предусмотрен закомментированный
(html-комментарии) вывод адреса используемого в данный момент шаблона.
Смотрите в браузере исходный html-код страницы в районе footer-а
(внизу, короче). Этот вывод, если не нравится, можно отключить.
Закомментируйте последнюю строку php-кода плагина (там как раз для
этого есть комментарий к строке "debug only"). Заметим, что если даже
при активированном плагине использовался один из стандартных шаблонов
wordpress, то отладочная запись выводится не будет.
Особо крутым программерам предлагается использовать как бонус массив $v_cat_array,
в который плагин записывает номера всех родительских категорий. Что
весьма удобно для сложных настроек, например, боковушек (sidebars). Но
это уже на любителя.
Замечание-1. Категорически не рекомендуется
использовать более двух уровней категорий. Т.е. создаем категорию, у
нее подкатегории. Но подкатегории подкатегорий не создавайте, хотя это
и предусмотрено движком Wordpress. При более чем двухуровневой иерархии
периодически встречаются сбои в выводе записей и принадлежности записей
к категориям (версии WP 15.03 - 2.03). И это никак не связано с работой
плагина.
Замечание-2. Wordpress разрешает записям относиться
сразу к нескольким категориям. Это не мешает, а, скорее, порой
усложняет работу по созданию шаблонов с нужными именами. Пользуйтесь
"отладочной" записью в footer-е, про которую я писал выше.
Замечание-3. Плагин является во многих случаях скоростной и безопасной заменой плагинов, разрешающих писать php-код в записях.
Примеры работы плагина можно особенно хорошо видеть на портале Мегалит.ру. Вот несколько:
- Категория с выводом только excerpts ("цитат" в русском переводе, а точнее, кратких аннотаций). При этом она тут же разбита на подкатегории.
- Подкатегория предшествующей категории, только excerpts (аннотация).
- Категория с выводом excerpts (аннотаций) плюс картинка (галереи).
- Полный вывод записей в категории с ограничением по "more".
- Полный вывод записей в категории.
- Ajax - категория.
- Запись - галерея.
- Запись - статья.
При создании шаблонов активно использовался механизм custom fields ("мета-поля", "произвольные поля") с помощью плагина Get_The_Meta.
Несколько легких и точных касаний клавиатуры плюс эта пара плагинов и
Вам не нужны никакие навороченные тяжеленные плагины галерей и т.п. Все
свободно делается на шаблонах.
Скачать плагин Wp-Style v.1.0.
Комментариев нет:
Отправить комментарий