Автор Тема: Не показывать в каталоге распроданные товары  (Прочитано 345 раз)

04 Декабря 2014, 16:25:01
  • Старожил
  • ****
  • Сообщений: 287
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Подскажите пожалуйста как заставить prestashop не показывать распроданные товары, т.е. количество которых равно нулю

Это решение в шаблоне product-list.tpl  не подходит
{if isset($products)}
<!-- Products list -->
        <ul id="product_list" class="clear">
        {foreach from=$products item=product name=products}
                    {if $product.quantity > 0}
.............
                    {/if}
               {/foreach}
</ul>
<!-- /Products list -->
{/if}

Не устраивает т.к. вместо заявленных например по умолчанию 12 товаров на странице. Их будет меньше.
Необходимо, чтобы изначально в $products отсутствовали распроданные товары.
Как быть?
04 Декабря 2014, 17:14:52
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 786
  • Репутация: +7/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Тогда вам контроллер CategoryController переопределить в нем есть функция, которая выбирает все товары.
/**
 * Assign list of products template vars
 */
public function assignProductList()
{
15 Декабря 2014, 14:45:08
Ответ #2
  • Старожил
  • ****
  • Сообщений: 287
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Тогда вам контроллер CategoryController переопределить в нем есть функция, которая выбирает все товары.
/**
 * Assign list of products template vars
 */
public function assignProductList()
{
По мне уж проще сделать простой скриптик, положить куда-нить на сайте и запускать по крону раз в сутки.

Что-то типа такого
$result = mysql_query("SELECT * FROM `ps_product` ORDER BY `id_product`");
$count = 0;

if(mysql_num_rows($result) > 0){
while($p = mysql_fetch_assoc($result)){
if($p['quantity'] == 0){
$sql = "UPDATE `ps_product` SET `active` = 0 WHERE `id_product` = ".$p['id_product'];
if(!mysql_query($sql)){
echo 'Error with id '.$p['id_product'].'<br />';
}else{
$count++;
}
}
}
}
echo 'Updated ' . $count . 'products <br />';