Сообщение #3 dabustard » 18.05.2022, 07:55
korshunov писал(а):Есть настройка для отображения отсутствующих товаров, которая действует на разные списки товаров
про какую настройку Вы говорите? В настройках каталога в админке для отсутствующих товаров включены опции Отображать по-умолчанию и Предзаказ включен, однако в рекомендуемых они не отображаются. Есть еще где-то?
korshunov писал(а):рекомендуемых отображать с нулевым остатком, а в прочих списках - иначе, то стандартно такое не предусмотрено и надо программировать...
был бы очень признателен, если подскажите какой файл "ковырять"
нашел такой код в RelatedProductsHelper.php:
Код: Выделить всё
$relatedFilter = [
'id' => $relatedIds,
'limit' => count($relatedIds),
'in_stock' => true,
'visible' => 1,
];
Если меняю 'in_stock' => true, на 'in_stock' >= 0, вообше все рекомендуемые пропадают, что я делаю не так? Если вообще убрать 'in_stock' => true, то отображаются все отсутствующие. Но у меня есть товары с отрицательным количеством, их отображать не нужно, поэтому этот вариант не подходит..
Upd: разобррался
В файле ProductsEntity.php есть такой код:
Код: Выделить всё
protected function filter__in_stock()
{
$this->select->where("(SELECT count(*)>0 FROM __variants pv WHERE pv.product_id=p.id AND (pv.stock IS NULL OR pv.stock>0) LIMIT 1) = 1");
}
Если нужно отображать отсутствующие товары в рекомендуемых, делаем аналог этой функции и размещаем ниже:
Код: Выделить всё
protected function filter__on_offer()
{
$this->select->where("(SELECT count(*)>0 FROM __variants pv WHERE pv.product_id=p.id AND (pv.stock IS NULL OR pv.stock>-1) LIMIT 1) = 1");
}
а в RelatedProductsHelper.php в блоке
Код: Выделить всё
$relatedFilter = [
'id' => $relatedIds,
'limit' => count($relatedIds),
'in_stock' => true,
'visible' => 1,
];
меняем
'in_stock' => true на
'on_offer' => true
[quote="korshunov"]Есть настройка для отображения отсутствующих товаров, которая действует на разные списки товаров[/quote]
про какую настройку Вы говорите? В настройках каталога в админке для отсутствующих товаров включены опции Отображать по-умолчанию и Предзаказ включен, однако в рекомендуемых они не отображаются. Есть еще где-то?
[quote="korshunov"]рекомендуемых отображать с нулевым остатком, а в прочих списках - иначе, то стандартно такое не предусмотрено и надо программировать...[/quote]
был бы очень признателен, если подскажите какой файл "ковырять"
нашел такой код в RelatedProductsHelper.php:
[code]
$relatedFilter = [
'id' => $relatedIds,
'limit' => count($relatedIds),
'in_stock' => true,
'visible' => 1,
];
[/code]
Если меняю 'in_stock' => true, на 'in_stock' >= 0, вообше все рекомендуемые пропадают, что я делаю не так? Если вообще убрать 'in_stock' => true, то отображаются все отсутствующие. Но у меня есть товары с отрицательным количеством, их отображать не нужно, поэтому этот вариант не подходит..
Upd: разобррался
В файле ProductsEntity.php есть такой код:
[code]
protected function filter__in_stock()
{
$this->select->where("(SELECT count(*)>0 FROM __variants pv WHERE pv.product_id=p.id AND (pv.stock IS NULL OR pv.stock>0) LIMIT 1) = 1");
}
[/code]
Если нужно отображать отсутствующие товары в рекомендуемых, делаем аналог этой функции и размещаем ниже:
[code]
protected function filter__on_offer()
{
$this->select->where("(SELECT count(*)>0 FROM __variants pv WHERE pv.product_id=p.id AND (pv.stock IS NULL OR pv.stock>-1) LIMIT 1) = 1");
}
[/code]
а в RelatedProductsHelper.php в блоке
[code]
$relatedFilter = [
'id' => $relatedIds,
'limit' => count($relatedIds),
'in_stock' => true,
'visible' => 1,
];
[/code]
меняем [b]'in_stock' => true[/b] на [b]'on_offer' => true[/b]