JSHelper::getDefaultItemid не определяет ItemId из CLI

22.06.2024 20:37
#1
sergeytolkachyov
User sergeytolkachyov
Name: Sergey
11.10.2019
Posts: 128
Quote
JSHelper::getDefaultItemid не определяет ItemId из CLI

Сабж. Контекст: плагин умного поиска. Для индексации нужно получить url с itemId. При запуске индексации из админки JSHelper::getDefaultItemid получает itemid.Тот же код из CLI не получает. ItemId == 0.

public static function getDefaultItemid($link = ''){
$Itemid = 0;
$lang = '';
if ($link!=''){
$url = parse_url($link);
parse_str($url['query'], $query);
if (isset($query['lang'])){
$lang = $query['lang'];
}
$shim = ShopItemMenu::getInstance($lang);
$Itemid = $shim->getItemIdFromQuery($query);
}
if ($Itemid){
return $Itemid;
}else{
return self::getShopMainPageItemid($lang);
}

}

Такое ощущение, что в AdministratorApplication getItemIdFromQuery отрабатывает.
А в CLIApplication - не хочет. Стучится в getShopMainPageItemid() и получает 0, так как у меня нет центральной точки входа в компонент (должны быть 2 независимых каталога/раздела на сайте - 2 категории верхнего уровня. Точки входа в "Список категорий / магазин" нет).


Joomla: 5.1.1

Joomla developer. https://web-tolk.ru JoomShopping Bitrix24 integration, custom developing.
 
23.06.2024 08:11
#2
admin
(Support Team)
User admin
Name: Admin
05.08.2010
Posts: 26424
Quote
Aw: JSHelper::getDefaultItemid не определяет ItemId из CLI

Дайте код полностью.

 
24.06.2024 14:51
#3
sergeytolkachyov
User sergeytolkachyov
Name: Sergey
11.10.2019
Posts: 128
Quote
Aw: JSHelper::getDefaultItemid не определяет ItemId из CLI

Собственно там этот код и есть. Перед этим получаю строку URL для товара. Передаю в метод JSHelper::getDefaultItemid() строку с URL вида indeх.php?option=com_jshopping&controller=product и т.д. Сейчас с телефона, код не под рукой. При запуске из админки ItemId определяется и отдаётся верно. Тот же код при запуске из CLI не определяет ItemId.
Рылся довольно глубоко, вроде не должно ничего влиять, так как из Приложения только язык берётся и юзер. Но юзер для товара не используется. В общем не совсем понятно.
Как обнаружил: при индексации умным поиском для элемента индекса поле
системный URL по сути является primary key. Плагин умного поиска отдаёт на индексацию объект с системным URL и текстами для индексации. Запускаешь индексацию вручную - снаружи для пользователей всё ок. На один запрос один ответ. При запуске из CLI задваивается один и тот же товар, так как старый индекс остаётся, а новые url приходят с ItemId = 0 и тот же товар сохраняется в базу с другим системным URL. Для пользователей снаружи на один запрос приходят уже 2 ответа - 2 одинаковых товара. Только один нормальный, так как ItemId правильный. А второй с неверным URL , без картинки и т.д., так как не пришёл ItemId.


Joomla developer. https://web-tolk.ru JoomShopping Bitrix24 integration, custom developing.
 
03.07.2024 11:04
#4
sergeytolkachyov
User sergeytolkachyov
Name: Sergey
11.10.2019
Posts: 128
Quote
Aw: JSHelper::getDefaultItemid не определяет ItemId из CLI

Результаты индексации. На 5.5 проверял - тоже самое.
Aw: JSHelper::getDefaultItemid не определяет ItemId из CLI
__________.png


Joomla developer. https://web-tolk.ru JoomShopping Bitrix24 integration, custom developing.
 
30.07.2024 12:01
#5
admin
(Support Team)
User admin
Name: Admin
05.08.2010
Posts: 26424
Quote
Aw: JSHelper::getDefaultItemid не определяет ItemId из CLI

Код
require_once(JPATH_SITE.'/components/com_jshopping/bootstrap.php');
print \JSHelper::getDefaultItemid();

работает в CLI

-------------
....так как у меня нет центральной точки входа в компонент .....
Если нет меню магазин то будет 0

 


Copyrights MAXXmarketing GmbH. Alle Rechte vorbehalten
Durch die Nutzung dieser Website stimme ich zu, dass Cookies zur optimalen Gestaltung der Website sowie zur Analyse der Nutzung der Website verwendet werden. Weiterführende Informationen finden Sie hier. OK, einverstanden.