Skip to main content

Добавили Namespace для шаблонов в Joomla 4.3

В Joomla 4.3.0 после многочисленных запросов разработчиков сторонних шаблонов были добавлены Namespaces для шаблонов.

Для чего нужно

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

Теперь можно создать хелпер TemplateHelper с методом prettifyPrice и вызвать его где это необходимо через:

use JoomlaVendor\Template\TemplateName\Site\Helper\TemplateHelper;
TemplateHelper::prettifyPrice(1000);

Да, в Joomla 3 можно было использовать JLoader, но это неправильный путь.

JLoader::register('TemplateHelper', JPATH_THEMES . "/{$template}/src/Helper/TemplateHelper.php");

 

Как добавить в свой шаблон

Namespace для шаблона добавляется так же как для любого другого расширения. Для начала в xml файл нужно указать новый тег

<namespace path="src">JoomlaVendor\Template\TemplateName</namespace>
 

Теперь создадим файл templates/TemplateName/src/Helper/TemplateHelper.php с содержимым:

<?php
namespace JoomlaVendor\Template\TemplateName\Site\Helper;

defined('_JEXEC') or die;

class TemplateHelper
{
static function prettifyPrice($value) {
return preg_replace('/(?=\B(?:\d{3})+(?!\d))/', " ", $value);
}
 

Обращу внимание, что в xml указывать фрагмент Site не нужно, но в php он уже будет обязательным, потому как Joomla сама его добавляет.

Если шаблон уже установлен и не является обновляемым, то необходимо удалить файл

administrator/cache/autoload_psr4.php

После авторизации в панели управления он будет пересоздан и в конце появится строка такого вида:

'JoomlaVendor\\Template\\TemplateName\\Site\\' => [JPATH_SITE . '/templates/TemplateName/src'],

Joomla, Joomla 4

  • Просмотров: 93
Закажите обратный звонок

RSForm! Pro example

This text describes the form. It is added using the Free Text component. HTML code can be added directly here.
Please type your full name.
Invalid email address.
Please tell us how big is your company.
Please specify your position in the company
Please select a date when we should contact you.
Ваши данные защищены