Внимание! В материалах сайта используются несколько ссылок на посторонние ресурсы. Но из-за сегодняшней ситуации в мире, некоторые сайты по этим ссылкам могут быть заблокированы. Чтобы исключить блокировку, рекомендуем установить программное обеспечение VPN.
Дочерний шаблон Joomla

 

Вы когда-нибудь вносили изменения в файлы шаблонов только для того, чтобы обнаружить, что все, что вы изменили, исчезло при следующем обновлении? Тогда у нас для вас хорошие новости: начиная с Joomla 4.1 эта проблема решена. Благодаря возможности создавать дочерние шаблоны, добавленные в ядро, вы можете вносить изменения, которые надолго сохранятся. В этой статье объясняется, как это работает.

 

От переводчика: данная статья была опубликована 1,5 года назад в Joomla Community Magazine и в историческом значении является ретроспективной с поправкой на Joomla 4 (сейчас актуальная ветка - Joomla 5). Тем не менее архитектурно концепция шаблонизации стабильна и не изменилась. Поэтому информация, рассмотренная в данной статье, является полезной и важной на сегодняшний день при погружении в мир разработки под Joomla.

 

Филип Уолтон
Филип Уолтон (Philip Walton)

Член лондонской группы пользователей JUGL и разработчик в компании SoftForge. Фил участвует в нескольких рабочих группах Joomla и участвует в развитии сообщества.

Обращаясь к истории: еще в августе 2020 года у сообщества была надежда, что дочерние шаблоны попадут в релиз Joomla 4.0. Разработка функционала дочерних шаблонов дискуссия велась на Github. Эта ветка интересна, поскольку отражает предыдущий взгляд на вопрос и эволюцию концепции.

Итак, концепция была выработана, но пользовательский интерфейс (UI) отсутствовал, поэтому Димитрис Грамматикогианнис предложил переработанную концепцию, и исправленная версия полностью вошла в версию 4.1 в виде дочерних шаблонов.

 

Шаблонизатор Joomla

 

Будет полезно кратко изучить, как работает механизм шаблонов. Мы поговорим об этом очень упрощенно, так что примите это во внимание.

 

Процесс начинается с запроса на страницу сайта. Как только запросы достигают сервера через URL-адрес через разрешенный DNS, сервер должен проверить, есть ли статические файлы для обслуживания или нет, затем PHP на сервере начинает действовать, инструктируя CMS Joomla выполнить запрос.

 

У Joomla есть жизненный цикл, и по мере выполнения частей кода он (код) в конечном итоге попадает в маршрутизатор (роутер). На маршрутизаторе Joomla спросит у всех компонентов, есть ли у них все необходимое для выполнения запроса. Если какой-либо компонент выходит вперед и говорит, что может, тогда запрос обрабатывается через уровни контроллера представления модели компонента (MVC).

 

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

 

Он объединит все структуры данных, предоставленные из модели, в структуру HTML.


 

Cassiopeia-child

Рис. 1

 

Затем контроллер активирует шаблон сайта, и шаблон заменит все теги jdoc:include.

 

Здесь создаются модули и другие части страницы. По мере чтения тегов jdoc:include они загружают встреченные модули, такие как mod_menu, а затем отдельные модули оценивают то, что им нужно, и добавляют это к информации, которую собирает шаблон.

 

Как только все будет готово, полученный HTML-код доставляется в браузер, и браузер отображает страницу для вашего просмотра.

 

Всё просто!..

 

Шаг навстречу дочерним шаблонам

 

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

 

Дочерний шаблон — это шаблон, содержащий только один файл — templateDetails.xml. У дочерних элементов должен быть родительский шаблон; они не могут существовать без направляющего родителя.

 

Чтобы это произошло, в основные файлы шаблонов были внесены некоторые изменения. В шаблоне Cassiopeia вы увидите в его XML-файле некоторые новые включения.

 

Одним из наиболее заметных является:

<inheritable>1</inheritable>

 

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

 

Довольно просто, не так ли?

 

Еще одним важным изменением является направление медиа.

 

<media destination = “templates/site/cassiopeia” folder=”media”>

 

Это определяет, где должна находиться папка мультимедиа для шаблона.

 

Почему эта media-папка меняется на определение XML шаблона?

 

В какой-то степени это поможет прояснить исторические несоответствия.

Все остальные пакеты в Joomla хранят свои статические ресурсы в папке мультимедиа.

 

Шаблоны были единственным исключением из этого правила.

 

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

 

Итак, с этого момента стандартом является:/media/templates/[administrator или site]/ВАШ_ШАБЛОН

 

В дочернем элементе вы можете указать, где вы храните свои файлы в XML.

 

Давайте проиллюстрируем это примером:

 

<media folder="media" destination="templates/site/cassiopeia_phils">
<folder>css</folder>
<folder>js</folder>
<folder>images</folder>
</media>
<inheritable>0</inheritable>
<parent>cassiopeia</parent>
</extension>

 

Способы использования дочерних шаблонов

Вы можете найти место для создания дочерних шаблонов в области шаблонов: АдминистраторСистемаШаблоныШаблоны сайта.


 

Cassiopeia-child

Рис. 2

 

Выберите родительский шаблон, из которого вы хотите создать дочерний шаблон.


 

Cassiopeia-child

Рис. 3

 

Теперь у нас есть возможность начать вносить изменения.

 

Скажем, например, вы хотите создать переопределение для файла user.css.

 

Чтобы сделать это, нужно было разветвить все файлы в шаблоне, создать копию нашего основного шаблона и затем сделать его шаблоном по умолчанию. Затем мы заходили и редактировали тот файл, который хотели отредактировать.

 

Это множество файлов, дублированных только для внесения одного изменения.

 

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

 

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

 

Разница? Вместо того чтобы дублировать все папки и файлы вашего шаблона, вам нужно дублировать только один файл, который нужно отредактировать.

 

Так просто!

 

Если вы хотите добавить новую позицию модуля, опять же, это очень просто: мы просто копируем файл templateDetails.xml и добавляем новую позицию.

 


<position>Моя новая позиция</position>

 

Затем мы можем сразу использовать эту позицию с модулями, что позволит быстро и легко расширить позиции модулей шаблона.

 

Мы можем добавить дополнительные поля в templateDetails.xml, и при сохранении файла дополнительные поля станут доступными.

 

Одно место для всех ваших ресурсов

 

Мы уже коснулись изменения в хранилище статических файлов родительского шаблона.

/media

 

В дочерних шаблонах все ресурсы находятся в папке мультимедиа. Что мы подразумеваем под активами?

 

Ресурсы используются для изменения внешнего вида шаблона:

 

  • CSS

  • Javascript

  • Images

  • Fonts

  • Icons


 

Cassiopeia-child

Рис. 4

 

Включив свои ресурсы в дочерний шаблон, вы можете легко подставлять различные JavaScript, CSS, изображения, шрифты и иконки в дочернем шаблоне, не перезаписывая родительские файлы!

 

Можно ли экспортировать дочерние шаблоны?

 

Да, можно. Функции экспорта пока нет, но все, что нужно, — это ZIP-архив с файлами вашего шаблона, а затем вы можете импортировать их на другой сайт.

Необходимые файлы и папки.

 

Файлы:

templateDetails.xml

index.php

 

Папка:

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

 

Если вы собираетесь импортировать дочерний шаблон на тот же сайт, чтобы быстро создать новый, вам нужно будет изменить имя дочернего шаблона и место назначения мультимедиа в XML-файле.

 

Как назначить на свой сайт различные дочерние шаблоны?

 

Это то же самое, что и при использовании нескольких шаблонов: вы просто переходите на вкладку назначения меню в дочернем шаблоне.

 

В админке заходим в раздел Система → Сайт → Стили шаблонов сайта

 

Выберите стиль шаблона, который является дочерним шаблоном, а затем выберите третью вкладку «Привязка к меню». Там вы можете выбрать, какие пункты меню будут использовать ваш дочерний шаблон.


 

Cassiopeia-child

Рис. 5

 

Переопределения и дочерние шаблоны

 

Хороший вопрос: когда лучше переопределение, а когда — дочерний шаблон?

 

Во-первых, что такое переопределение?

 

Переопределение — это файл, который вы можете создать и сохранить в папке HTML вашего шаблона, что позволяет вам предоставить собственный макет для компонента или модуля.

 

Пока все хорошо, но часто шаблон поставляется с переопределениями основных компонентов Joomla внутри шаблона, так что шаблон может сделать другой макет для стандартного шаблона Joomla. Если вы затем захотите изменить вид переопределения шаблона, вам придется редактировать файлы шаблона напрямую, это не очень хорошая идея. При обновлении ваша работа может быть перезаписана.

 

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

 

 


 

Полезное на эту тему

 

 

Поделиться:

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

Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

 

Hosting CityHost

Внимание! Это самый лучший хостинг, который я выбрал! И за приемлемую цену...
Мой сайт - Joomlasite.net появился на хостинге с середины июня 2024 года. Так как это мой первый сайт, который выложил в интернет, то опыта работы на хостинге оказалось совсем мало. Были обнаружены некоторые ошибки, как в структуре сайта, так и особенно много появилось проблем с индексацией в поиске... Но сейчас это уже в прошлом...
Очень благодарен Службе поддержки в которую обращался много раз за помощью. Все проблемы разрешались очень грамотно и оперативно в разное время суток.
Несколько слов о загрузке сайта,- сайт загружается очень быстро, без сбоев, как на компьютере, так и на мобильном устройстве.
Никаких трудностей с работой на хостинге не испытываю, и за пользование которым - оплатил двухгодичный тариф. Перед этим был бесплатный тестовый период в течение 10-и дней, и после которого - без сомнений и колебаний решил остаться на этом ресурсе.
Хочется отметить очень классную Панель управления хостингом - простая, информативная и интуитивно понятная. Все возможности настроек, как сайта, так и хостинга выполнены грамотно и профессионально.
Сервера хостинга находятся в Украине, Финляндии и Германии,- мой сайт размещен на немецком сервере.
На этом свои впечатления об этом хостинге заканчиваю, и настоятельно рекомендую всем сайтостроителям - воспользоваться лучшим украинским хостингом CityHost.