среда, 17 июня 2020 г.

Шаблон Joomla сайта в зависимости от домена/поддомена

Очень интересный, я бы даже сказал, довольно интимный вопрос :) Можно сделать автоматическую подстановку Шаблона или Стиля шаблона в зависимости от нужного условия, например, в зависимости от домена, через который открыт сайт.

Есть несколько вариантов.
Пока поделюсь своим старым вариантом. Пусть будет, для коллекции.
Может когда-то и актуальным вариантом поделюсь :)

Так вот, данный вариант - это хак одного из файлов ядра Joomla.
Файл libraries/src/Application/SiteApplication.php

В методе getTemplate(), внутри foreach ($templates as &$template), вместо такого кода:
// Create home element
if ($template->home == 1 && !isset($template_home) || $this->_language_filter && $template->home == $tag)
{
    $template_home = clone $template;
}

Надо прописать примерно такой:
// alexey@gnevyshev.ru
// old variant
if (preg_match('/domain1.com/i', $_SERVER['HTTP_HOST']) && $template->template == 'template_1_name' && !isset($template_home)) {
    $template_home = clone $template;
}
else if (preg_match('/domain2.com/i', $_SERVER['HTTP_HOST']) && $template->template == 'template_2_name' && !isset($template_home)) {
    $template_home = clone $template;
}
else if (preg_match('/domain3.com/i', $_SERVER['HTTP_HOST']) && $template->template == 'template_3_name' && !isset($template_home)) {
    $template_home = clone $template;
}

Минус данного варианта - это хак ядра. Обновляться сложнее, с хаками.
Тем не менее, работает на ура! )
Есть вариант без хака. Кстати, довольно красивый и компактный )

Комментариев нет:

Отправка комментария