Новости Joomla

Загадочный параметр $live_site в configuration.php Joomla

Загадочный параметр $live_site в configuration.php Joomla

Давным-давно, когда Joomla ещё была маленькой, в неё внедрили параметр $live_site. В ней хранился домен текущего сайта на случай, если Joomla не могла его определить из-за неверной настройки сервера. Нужно это было для разных SEO-компонентов, для использования редиректов и т.д.

Со временем для работы собственно сайта этот параметр перестал быть нужным. Уже в начале 2010-х стали встречаться рекомендации оставлять этот параметр пустым, дабы оный не привёл к лишним проблемам и путанице. Тем более, в web-админке нет места, где его можно указать или посмотреть его значение. Только в configuration.php, а туда смотрят не часто.

Однако, параметр всё же остался в ядре Joomla. Зачем он нужен? А нужен он в 2-х случаях:

  • для работы класса Joomla\CMS\Uri\Uri, который часто используется в коде Joomla для работы методов
    Uri::root() и
    Uri::base(), а значит может влиять и на работу в том числе ajax-скриптов.
  • для работы Joomla в CLI - командной строке сервера. В случае если вы используете в вашем CLI-плагине методы опять-таки класса Uri, то CLI ничего не знает о текущем домене, так как запускается вне web-сервера.

Поэтому домен нужно указывать принудительно. Либо с помощью параметра командной строки

--live-site, например,
—live-site=https://site.ru/. Со слешем на конце, иначе в CLI адрес сайта станет
https://site.rujoomla.php.Либо в параметре
$live_site в файле configuration.php, так как
CliApplication берёт настройку оттуда, если параметр команды не указан или пуст.

⚠️ Иначе в качестве хоста и url класса Uri будет установлено https://joomla.invalid/set/by/console/application. В самом же коде команды получить параметр

$live_site можно из объекта приложения

<?php protected function doExecute(InputInterface $input, OutputInterface $output): int { //... $live_site = $this->getApplication()->get('live_site'); //... }

и исходя из этого строить дальнейшую логику.

0 Пользователей и 1 Гость просматривают эту тему.
  • 3 Ответов
  • 492 Просмотров
*

Alex_gs

  • Захожу иногда
  • 152
  • 1 / 0
Есть много расширений, модули которых самостоятельно поддерживают многоязычность.

Соответственно вопрос - как сделать заголовок модуля тоже многоязычным, чтобы не дублировать модули (2 или 3-х язычный сейчас норма у нас).
Дело в том, что следующий проект будет на 4 языка добавят польский. И даже захотели и немецкий...

Возможно другое решение.
Есть ли модуль, который бы выводил 1 языковую константу. Я бы ставил его перед функциональными модулями.
*

sivers

  • Живу я здесь
  • 2585
  • 359 / 0
Re: Языковая константа в Module Header
« Ответ #1 : 29.07.2022, 23:48:40 »
Проще всего, пожалуй, будет поставить в настройках модуля "Стиль модуля" = none, тем самым отключится стандартный вывод заголовка и обрамляющего блока. И выбрать переназначенный макет, в котором самостоятельно выводить заголовок через JText::_() и обрамляющий блок (если нужен).

Того же эффекта можно достичь, если добавить соотв. стиль модуля через переназначение или добавление нового (если это вам проще).
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Akeksandr

  • Захожу иногда
  • 396
  • 12 / 0
Re: Языковая константа в Module Header
« Ответ #2 : 30.07.2022, 08:44:23 »
Почитайте ещё советы с темы. Мне sivers очень помог советом и я сделал такое.
Перевод заголовков модулей?
*

Alex_gs

  • Захожу иногда
  • 152
  • 1 / 0
Re: Языковая константа в Module Header
« Ответ #3 : 03.08.2022, 12:03:41 »
С переопределением модулей и JText понятно. Я так делаю в критичных моментах. Title не менял пока.

В основном внутри php бывают моменты в англоязычных модулях, когда строки вывода модуля задаются при настройке модуля в админке.
Обычно добавляю сравнение начала строки на "MOD" ну и константы так называю. Т.е. вывожу или обычный текст или константу (если начало строки MOD).

Где выводится module title?
Пробовал поменять в \templates\{template}\html\modules.php .
Тут - echo '<' . $headerTag . ' class="' . $headerClass . '">' . $module->title . '</' . $headerTag . '>';
Не работает.
« Последнее редактирование: 03.08.2022, 12:36:10 от Alex_gs »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Привязан header ко всем языкам

Автор records44

Ответов: 0
Просмотров: 342
Последний ответ 11.07.2023, 17:00:38
от records44
advanced module manager в J4 показывает все модули на всех страницах

Автор androv77

Ответов: 2
Просмотров: 552
Последний ответ 30.09.2022, 13:57:50
от androv77