Новости 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 Гость просматривают эту тему.
  • 7 Ответов
  • 5957 Просмотров
*

nia

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Здравствуйте, подскажите, пожалуйста, как в Joomla! 2.5 возможно добавить описания к пунктам меню.

Возможно существовал какой-то модуль/плагин/компонент, который позволял выводить менюхи как материалы?

Нужно, чтобы было название пункта меню, а под ним короткое описание... Пример во вложении.

Или это как-то можно реализовать путём поправок в коде? Перебрал несколько компонентов, но нашёл максимум где можно выводить картинку с заголовком. Буду рад любой информации...
*

sivers

  • Живу я здесь
  • 2585
  • 359 / 0
Так используйте поле "Примечание". В макете меню выводите его как echo $item->note;

Другой вариант - плагин группы content, обработчик события onContentPrepareForm. Позволяет вносить правки в форму. Можно добавить поле в группу параметров, например (в БД хранится в json'e).
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

nia

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Так используйте поле "Примечание". В макете меню выводите его как echo $item->note;

Другой вариант - плагин группы content, обработчик события onContentPrepareForm. Позволяет вносить правки в форму. Можно добавить поле в группу параметров, например (в БД хранится в json'e).

Вот вариант с примечанием мне вроде подошел бы, а не можете подсказать подробнее про echo $item->note; (я с php не дружу...) Как понять куда именно в шаблоне менюхи это добавить?
*

nia

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Так используйте поле "Примечание". В макете меню выводите его как echo $item->note;

Другой вариант - плагин группы content, обработчик события onContentPrepareForm. Позволяет вносить правки в форму. Можно добавить поле в группу параметров, например (в БД хранится в json'e).


Нашёл вот такой кусок кода в administrator\components\com_menus\views\items\tmpl\default.php

Если его убрать, то в админке в пунктах меню пропадает алиас и примечание...

Код
<p class="smallsub" title="<?php echo $this->escape($item->path);?>">
<?php echo str_repeat('<span class="gtr">|&mdash;</span>', $item->level-1)?>
<?php if ($item->type !='url') : ?>
<?php if (empty($item->note)) : ?>
<?php echo JText::sprintf('JGLOBAL_LIST_ALIAS', $this->escape($item->alias));?>
<?php else : ?>
<?php echo JText::sprintf('JGLOBAL_LIST_ALIAS_NOTE', $this->escape($item->alias), $this->escape($item->note));?>
<?php endif; ?>
<?php elseif($item->type =='url' && $item->note) : ?>
<?php echo JText::sprintf('JGLOBAL_LIST_NOTE', $this->escape($item->note));?>
<?php endif; ?></p>

Скажите, я на правильном пути?  !
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Скажите, я на правильном пути?  !
Не - не то !
Просто добавьте описание меню в поле для примечания !!
*

sivers

  • Живу я здесь
  • 2585
  • 359 / 0
Макеты модуля меню /modules/mod_menu/tmpl/*.php копируйте в /templates/имя_шаблона/html/mod_menu/.
И там правьте. Можно попробовать в файле default.php (ближе к концу) перед строками echo '</li>'; добавить echo $item->note;
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

nia

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Макеты модуля меню /modules/mod_menu/tmpl/*.php копируйте в /templates/имя_шаблона/html/mod_menu/.
И там правьте. Можно попробовать в файле default.php (ближе к концу) перед строками echo '</li>'; добавить echo $item->note;

Круто! Это сработало! Спасибо огромное!  :D *DRINK*
*

sivers

  • Живу я здесь
  • 2585
  • 359 / 0
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться