Этого метода порой очень и очень не хватает в ядре. Возможно, стоит его изменить как-то, чтоб облегчить объект или прокинуть параметры на вход метода.
/**
* Функция выбирает товары JoomShopping из базы данных по списку id
*
* @param array $product_ids Простой одномерный массив [1, 2, 3, ...]
*
* @return void
*
* @since 1.0.0
*/
public function loadProductsByIds(array $product_ids): void
{
$lang = \JSFactory::getLang();
if (count($product_ids) > 0)
{
//@todo Вычистить запрос, оставить выборку только самого нужного
$query = "SELECT * FROM `#__jshopping_products` AS prod
LEFT JOIN `#__jshopping_products_to_categories` AS pr_cat USING (product_id)
WHERE prod.product_id IN(" . implode(',', $product_ids) . ") AND prod.product_publish=1 ORDER BY FIELD(prod.product_id, ".implode(',', $product_ids).")";
$db = Factory::getDBO();
$db->setQuery($query);
$products = $db->loadObjectList();
// Добавляем вендоров, производителей, пути к картинкам и т.д.
// Второй параметр - setUrl - добавляет в объект товара ссылки на товар и на покупку (в корзину)
$products = \JSHelper::listProductUpdateData($products, 1);
Factory::getApplication()->triggerEvent('onBeforeDisplayProductList', array(&$products));
foreach ($products as $product)
{
$name = $lang->get('name');
$product->name = $product->$name;
$short_description = $lang->get('short_description');
$product->short_description = $product->$short_description;
$description = $lang->get('description');
$product->description = $product->$description;
}
// Готовый массив
$this->products = $products;
}
}
Joomla: 4.2
JoomShopping: 5.0.6
JoomShopping: 5.0.6
Joomla developer. https://web-tolk.ru JoomShopping Bitrix24 integration, custom developing.