Этот материал является переводом первой части серии материалов о концепциях WordPress для разработчиков Joomla автора Cory Webb - WordPress concepts for Joomla developers: Themes.
Идея серии в том, чтобы пояснить концепции WordPress с точки зрения разработчика Joomla, и помочь вам лучше понять, в чём WordPress и Joomla схожи, и в чём они различаются.
Первый материал охватывает темы WordPress. Цель этого материала в том, чтобы сравнить и сопоставить темы WordPress с шаблонами Joomla. Мы не будем сильно углубляться в создание тем WordPress. В сети достаточно материалов на эту тему.
Если вы опытный разработчик шаблонов Joomla, вы без труда должны разобраться в концепциях разработки тем для WordPress. Многие вещи в создании тем WordPress очень похожи на разработку шаблонов Joomla, но есть отличия в том, как они работают. Давайте начнём со структуры файлов.
Структура файлов
Шаблоны Joomla распаложены в папке /templates
установки Joomla, каждый в папке с одноименным названием шаблона. Каждому шаблону Joomla для работы необходимо 2 файла: index.php
and templateDetails.xml
. Файл index.php
содержит код, необходимый для рендеринга шаблона. Файл templateDetails.xml
является файлом манифеста шаблона и содержит информацию о шаблоне Joomla.
Темы WordPress расположены в папке /wp-content/themes
установки WordPress с одноименным названием темы. Также как и шаблонам Joomla, шаблону WordPress для работы необходимо 2 файла: index.php
и style.css
. Файл index.php
содержит код, необходимый для рендеринга шаблона. Файл style.css
используется для двух целей. Это первичная таблица стилей темы, а также информация о теме в специальном блоке заголовка файла. Вот так выглядит пример такого блока:
/*
Theme Name: Twenty Seventeen
Theme URI: <a href="https://wordpress.org/themes/twentyseventeen/">https://wordpress.org/themes/twentyseventeen/</a>
Author: the WordPress team
Author URI: <a href="https://wordpress.org/">https://wordpress.org/</a>
Description: Twenty Seventeen brings your site to life with immersive featured images and subtle animations. With a focus on business sites, it features multiple sections on the front page as well as widgets, navigation and social menus, a logo, and more. Personalize its asymmetrical grid with a custom color scheme and showcase your multimedia content with post formats. Our default theme for 2017 works great in many languages, for any abilities, and on any device.
Version: 1.0
License: GNU General Public License v2 or later
License URI: <a href="http://www.gnu.org/licenses/gpl-2.0.html">http://www.gnu.org/licenses/gpl-2.0.html</a>
Text Domain: twentyseventeen
Tags: one-column, two-columns, right-sidebar, flexible-header, accessibility-ready, custom-colors, custom-header, custom-menu, custom-logo, editor-style, featured-images, footer-widgets, post-formats, rtl-language-support, sticky-post, theme-options, threaded-comments, translation-ready
This theme, like WordPress, is licensed under the GPL.
Use it to make something cool, have fun, and share what you've learned with others.
*/
Больше информации о файле style.css
вы можете найти здесь.
Миниатюра/Скриншот
Ещё одним сходством между шаблонами Joomla и темами WordPress в том, что у них есть миниатюра или скриншот того, как выглядит тема. В Joomla это PNG файла с названием template_thumbnail.png
, а в WordPress это PNG файла с названием screenshot.png
. Если они есть, то Joomla и WordPress отобразят их в панели управления шаблонами или темами.
Функции
Темы WordPress обычно содержат файл под названием functions.php
, который содержит функции для рендеринга некоторый частей темы. Он может также содержать код для таких вещей, которые обычно делают плагины, что является моим самым большим недовольством в темах WordPress. Однако в последние годы многие разработчики тем стараются разделять логику темы и логику данных, что, безусловно, является более правильным подходом к разработке тем.
Этот же файл выполняется ещё две функции – регистрирует сайдбары и позиции меню темы. Сайдбары – это области внутри темы, в которых происходит рендеринг виджетов. Сайдбары похожи на позиции модулей в Joomla, а виджеты на модули, хотя есть и некоторые различия, которые я рассмотрю в следующем материале. Позиции меню – это области в теме, в которых рендерятся меню. Они также похоже на позиции модуля, но основное отличие в том, что зарегистрированные позиции меню напрямую привязаны к менеджеру меню WordPress.
Код
Одним из самых больших различий между шаблонами Joomla и темами WordPress является их код. Темы WordPress используют PHP тэги и функции для загрузки хидера (header), рендеринга сайдбаров (sidebar), рендеринга основной области контента (или "The Loop", будет рассмотрен в следующем материале), а также для рендеринга футера (footer).
В Joomla шаблоны также используют PHP, но у Joomla свой язык разметки, в котором она рендерит такие вещи как header, component (компонент) и позиции модулей через тэги <jdoc:include... />
. WordPress так не работает, поэтому вам придётся ознакомиться с тэгами шаблона или PHP сниппетами для рендеринга частей темы.
Дочерние тем
Есть в WordPress такая вещь, которой нет в Joomla – это дочерние темы (child themes). Дочерняя тема в WordPress использует существующую родительскую тему, не внося в неё изменений. Вам нужно устанавливать обе темы сразу, но активировать только дочернюю тему.
WordPress знает, что дочерняя тема предназначена для использования вместе с родительской темой, потому что вы указываете родительскую тему в заголовке style.css
. Вы просто добавляете следующую строку: Template: parent_theme_name
. Вы можете использовать дочернюю тему для загрузки кастомного CSS в родительскую тему. Для этого используется специальная функция в файле functions.php
дочерней темы. Вы также можете использовать дочернюю тему для переопределения PHP шаблонов родительской темы, что даёт вам полный контроль над выходными данными и при этому сохраняется код и стили родительской темы.
Установка
В Joomla вы должны явно установить шаблон, чтобы Joomla смогла его использовать. В WordPress вы можете просто перекинуть тему в папку /wp-content/themes
и WordPress сразу же узнает о ней. Вам останется просто активировать её для использования.
Одновременно только одна тема
Joomla позволяет вам установить и использовать столько шаблонов, сколько вы захотите, путём назначения разных шаблонов к разным страницам (пунктам меню) вашего сайта. Это отличная возможность, которая значительно отличает Joomla от WordPress, так как позволяет вам иметь совершенно различный дизайн для разных частей вашего сайта. WordPress, с другой стороны, позволяет одновременно использовать только одну тему. Есть плюсы и минусы в обоих подходах, просто имейте в виду, что есть такое ограничение у WordPress.
Итоги и что дальше?
В этом материале я поверхностно прошёлся по темам WordPress. Тем, кто уже научился создавать шаблоны Joomla перед тем, как создавать темы WordPress, эта статья поможет пролить свет на вопросы, которые были непонятны мне, когда я впервые начал создавать темы для WordPress Подробную информацию о темах WordPress вы можете получить здесь.
В следующем материале я разберу сайдбары и виджеты, и проведу сравнение с позициями модулей и модулями Joomla.