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

sk8work

  • Новичок
  • 3
  • 0 / 0
Всем привет.
Неожиданно столкнулся со следующей проблемой.
Пишу CRUD для работы с вакансиями на сайте, чтобы облегчить работу отдела кадров (жалуются, что шибко сложная админка).
Понимаю, что занимаюсь ерундой, но такая задача поставлена.
Все работает превосходно, Кастомные поля редактируются, рубрики тоже. Все отлично кроме добавления новой вакансии (материала),
т.к. ума не приложу, как составить запрос к БД, чтобы прикрепить к новому материалу метку 'jobs'...  *ОХ-Х-Х*
Если есть идеи, буду очень признателен. !

(возможно не в ту ветку пишу)
*

sivers

  • Живу я здесь
  • 2585
  • 359 / 0
Если знакомы с системой плагинов, то можно использовать событие onContentBeforeSave или onContentPrepareForm:
https://docs.joomla.org/Plugin/Events
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

sk8work

  • Новичок
  • 3
  • 0 / 0
Посидел, поизучал материалы, так ни к чему и не пришел.
Тело в том, что при добавлении вакансии, я делаю запрос к БД:

$query = "INSERT into #__content (asset_id, title, alias, images, urls, attribs, metadata, introtext, state, catid, created, created_by, created_by_alias, modified, modified_by, checked_out, checked_out_time, publish_up, publish_down, version, ordering, metakey, metadesc, access, hits, language, xreference, note)
        VALUES ('$asset_id', '$title', '$alias', '$images', '$urls', '$attribs', '$metadata', '', '$state', '$catid', '$publish_up', '522', '', '0000-00-00 00:00:00', '0', '0', '0000-00-00 00:00:00', '$publish_up', '0000-00-00 00:00:00', '1', '5', ' ', ' ', '1', '1', '*', '', '')";
       $db->setQuery($query)->execute();

Результат: Появляется материал в БД

Если мне надо заполнить кастомные поля для этого материала, я использую следующий код:



$query = "SELECT * FROM #__content WHERE alias='$alias' && catid='$catid'";
$db->setQuery($query);
$fields = $db->loadObjectList();
$thisID = $fields[0]->id;
   
   
// Зарплата - 3
if(isset($_POST["tax"])){
        $tax = $_POST["tax"];
   $query = "INSERT into #__fields_values (field_id, item_id, value) VALUES ('3', '$thisID','$tax')";
   $db->setQuery($query)->execute();
}


Ну и так далее.
Все прекрасно заполняется.

Необходимо только проставить материалу метку.
Из БД получил вывод таблицы #__tags. Там я необходимую метку нашел. А вот как составить запрос, чтобы материал был к этой метке отнесен, я не могу понять, т.к. нет таблицы с привязкой по меткам (как в кастомных полях, где есть привязка по ID материала).
*

sivers

  • Живу я здесь
  • 2585
  • 359 / 0
а как же #__contentitem_tag_map?
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

sk8work

  • Новичок
  • 3
  • 0 / 0
а как же #__contentitem_tag_map?

Точно!
Вот такое решение:

$type_alias       = 'com_content.article';
$core_content_id    = '179';  // Тут от балды - взял от другого поста
$content_item_id    = $thisID; // ID материала
$tag_id         = '66';      // ID необходимого тэга(метки), к которой надо привязать материал (у меня - это 'jobs')
$tag_date         = $publish_up;
$type_id          = '1';

$query = "INSERT into #__contentitem_tag_map (type_alias, core_content_id, content_item_id, tag_id, tag_date, type_id)
           VALUES ('$type_alias', '$core_content_id', '$content_item_id', '$tag_id', '$tag_date', '$type_id')";

$db->setQuery($query)->execute();

Все работает))
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вставка видео со своего сервера через media manager

Автор goga_pgasovav

Ответов: 2
Просмотров: 897
Последний ответ 27.03.2025, 14:51:43
от Akeksandr
[Решено] Вывод значений из custom fields материала в модуле по имени поля

Автор goga_pgasovav

Ответов: 3
Просмотров: 982
Последний ответ 30.12.2024, 13:22:11
от goga_pgasovav
Переход на страницу материала после его размещения пользователем

Автор stepan39

Ответов: 0
Просмотров: 624
Последний ответ 22.11.2024, 07:14:15
от stepan39
Регистрация и авторизация через соц сети

Автор DamaVbubi

Ответов: 3
Просмотров: 1502
Последний ответ 14.04.2024, 16:15:05
от Гоша_Компьютерный
Вывод даты материала в списке тегов

Автор androv77

Ответов: 2
Просмотров: 1740
Последний ответ 09.11.2023, 16:33:08
от denxio