Prestashop - нет в наличии
У меня есть магазин prestashop, когда я продаю футболки. Каждая футболка имеет несколько размеров (комбинаций), то есть M, L, XL и т. Д.
В blocklayered
Фильтр есть два фильтра: "Доступно" и "Нет на складе", но они ведут себя странно: фильтр "Нет на складе" показывает товары, которые имеют 0 единиц в одном / нескольких размерах.
Как я могу изменить это, чтобы показывать в списке "нет в наличии" только товары, которые не имеют товаров, доступных во ВСЕХ доступных размерах.
Я имею в виду, когда на футболке 3 предмета размером M, но 0 размером L, я не хочу, чтобы они отображались в списке "Нет в наличии".
Второе - как я могу скрыть товары, которых действительно нет в наличии (нет товаров во всех комбинациях), со страницы списка категорий по умолчанию? Чего я хочу добиться, так это того, что на страницах категорий у нас есть вкладка "Архив", на которой должны отображаться товары, которые раньше были доступны в магазине, но их больше нет.
Я использую PS 1.6.1.9
2 ответа
В базовом классе PrestaShop есть функция StockAvailable.php, с помощью которой можно найти фактическое количество любого варианта продукта.
StockAvailable::getQuantityAvailableByProduct()
Вы можете просто выполнить цикл для каждого варианта продукта, найти количество для всех вариантов и пометить продукт на складе, только если какой-либо вариант недоступен.
Откройте www/themes/yourtheme/product-list (не забудьте сделать резервную копию)
Ищи
{assign var='nbLi' value=$products|@count}
Справа внизу добавить
{foreach from=$products item=product name=products}
{if ($product.quantity <= 0)}
{$nbLi=$nbLi-1}
{/if}
{/foreach}
Ищи
{foreach from=$products item=product name=products}
Справа внизу добавить
{if ($product.quantity > 0)}
Ищи
{/foreach}
Прямо над добавлением
{/if}
Заменить все экземпляры
$smarty.foreach.products.total
а также
$smarty.foreach.products.iteration
с
$nbLi
Этот вопрос был обсужден MEG Venture на форуме prestashop. https://www.prestashop.com/forums/topic/537182-disable-out-of-stock-product-from-listing-only/