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

Dianis

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
Здравствуйте.

Помогите пожалуйста разобраться в проблеме.

Стоит Joomla 2.5.14 + VirtueMart 2.0.24 + CSVI 5.9.5 + VirtueMart 2 Product Filter by Custom Fields

Проблема в том что при импорте товаров дублируются значения "Настраиваемых полей"

Т.е. допустим я создал в "Настраиваемых полях" поле с именем "Форма" тип поля "плагин" в плагинах выбрал "Virtuemart 2 multiple customfields plugin" добавил к значения "овал, прямоугольник, квадрат"
Далее я создал .csv файл в open office как положено сохранил его в utf8 разделитель полей ^, разделитель текста |

Код
|product_sku|^|product_name|^|category_path|^|product_price|^|product_s_desc|^|product_desc|^|custom_title|^|custom_param|^|custom_value|^|custom_price|^|published|
|Тест|^|Тест|^|ANTIQUE|^48500^^^|Форма|^|Квадрат|^|param|^^1

В итоге все импортируется нормально, но почемуто получается дубляж значений поля "Форма" как на рисунке 1

Если этот товар взять и повторно сохранить, нажав при редактировании товара "сохранить" то получаем результат как на рисунке 2 т.е. все нормально становится.

Что это ?

*

Dianis

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
Поставил версию  CSVI pro 5.14 - результат тот же...
*

Servelatin

  • Захожу иногда
  • 132
  • 1 / 0
Вопрос решен? аналогичная проблема =(
*

Dianis

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
Версия CSVI pro 5.14
Apache_OpenOffice_4.0.1_Win_x86_install_ru

Обратите внимание на это.

1. product_sku только латиницей
2. порядок столбцов: custom_title, custom_value, custom_param
3. проверьте кодировку (utf8)

« Последнее редактирование: 14.01.2014, 22:08:20 от Dianis »
*

Servelatin

  • Захожу иногда
  • 132
  • 1 / 0
Версия CSVI pro 5.14
Apache_OpenOffice_4.0.1_Win_x86_install_ru

Обратите внимание на это.

1. product_sku только латиницей
2. порядок столбцов: custom_title, custom_value, custom_param
3. проверьте кодировку (utf8)

Спасибо большое за помощь! Но проблему оказалась в другом.
Сегодня с более ясной головой начал копать заново. Возможно поможет кому-то еще:
Дублировались значения настраиваемых полей в фильтре товара, причем только некоторые и постоянно разные (после разных импортов CSVI).
Значения в моём случае должны быть импортированы в виде "<p>Значение</p>". Так вот после импорта оказывалось, что к некоторым в конце прилипал пробел (хотя в csv его нет, проверял).
Получалась запись, вида: "<p>Значение </p>". Что и приводило к дублю. Решение такое:
Заходим в phpMyAdmin, и делаем запрос к бд такого вида: UPDATE НАЗВАНИЕ_ТАБЛИЦЫ SET НАЗВАНИЕ_ПОЛЯ = replace(НАЗВАНИЕ_ПОЛЯ,"<p>ЗНАЧЕНИЕ </p>","<p>ЗНАЧЕНИЕ</p>");

Т.е. мы запросом насильно меняем все кривые поля с лишним пробелом. Есть один минус - после каждого импорта милости прошу заглянуть в бд для очередного запроса.

P.S. за бугром эта тема так же жива, но решений конкретных не нашел нигде. Буду рад увидеть багфикс, решающий всё на корню.
*

kelpi

  • Осваиваюсь на форуме
  • 27
  • 0 / 0
происходит тоже самое, только у меня не используется <p>, и в значениях пробелов нет, по порядку расположения как и нужно, никто не решил проблему?
*

nc97

  • Новичок
  • 1
  • 0 / 0
Всем привет!
Вижу, что тема уже не актуальна (по срокам), но, все-же опишу, как я решил проблему с дублированием Настраиваемого поля, при импорте через CSVI. Может пригодиться кому...

Делаю все на: Joomla!3.7.2, VM 3.2.2, CSVI PRO VirtueMart(3) 7.2.3, plg_csviext_param_csvi_7.2.0.
По логам CSVI вычислил, что зачем-то делается выборка по всем Настраиваемым полям на соответствие парпаметра, и потом это все "льется" в базу.
Испарвил так:
в файле плагина plugins\csviext\param\param.php ищем блок (примерно строка 154):
Код
$query->clear()
    ->select($this->db->quoteName('id'))
    ->from($this->db->quoteName('#__virtuemart_product_custom_plg_param_values'))
    ->where($this->db->quoteName('value'). ' IN (' . implode(',', $qentries). ')')
    ->order($this->db->quoteName('id'));
$this->db->setQuery($query);
$pids = $this->db->loadColumn();
$log->add('Load the parameter value IDs');
и меняем его (ну или добавляем строчку из кода ниже, которая с комментом /* Добавил */)  на:
Код
$query->clear()
    ->select($this->db->quoteName('id'))
    ->from($this->db->quoteName('#__virtuemart_product_custom_plg_param_values'))
    ->where($this->db->quoteName('value'). ' IN (' . implode(',', $qentries). ')')
    ->where($this->db->quoteName('virtuemart_custom_id'). ' = ' . (int) $virtuemart_custom_id) /* Добавил */
    ->order($this->db->quoteName('id'));
$this->db->setQuery($query);
$pids = $this->db->loadColumn();
$log->add('Load the parameter value IDs');

после пробуем импортировать, и видим, что, дублей нет, т.к. теперь параметр крепится к конкретному Настраиваемому полу...

Не знаю, может я что-то и нарушил при этом, но в моем конкретном случае меня вполне устроил результат...

Пишите свои решения и/или соображения по этому поводу.
Всем удачи!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Удалить настраиваемое поле через csvi загрузку

Автор Mila-luchik

Ответов: 1
Просмотров: 2304
Последний ответ 12.11.2021, 12:20:28
от Mila-luchik
Привязка товаров к категориям при импорте из csv

Автор max_max

Ответов: 8
Просмотров: 2985
Последний ответ 16.08.2021, 18:45:19
от max_max
Импорт/экспорт данных через CSVI формат YML

Автор One

Ответов: 9
Просмотров: 5279
Последний ответ 27.07.2021, 12:27:01
от DeZDemon@
Проблема с импортом картинок через RO csvi

Автор Leva

Ответов: 0
Просмотров: 2416
Последний ответ 15.02.2021, 16:32:41
от Leva
SLUG CSVI

Автор Servelatin

Ответов: 10
Просмотров: 3763
Последний ответ 19.12.2020, 12:17:35
от rsn