Удалить некоторые товары из главного массива $products

Добрый день!


При добавлении товара в корзину, из каталога должны исчезать определённые товары. Этот список товаров известен и через хук frontendProducts делаю их не в наличии, или могу изменить цену на 0. Но они всё равно остаются в общем списке товаров (в категории)

Пытался удалить с помощью unset, но тогда "рушится" пагинация, и если на первой странице только товары, которые нужно было скрыть, то в итоге выводится надпись, что товаров нет и товары (которые разрешены) начинают показываться со второй страницы...

1 ответ

  • 1
    replicant 20 ноября 2020 14:50 #

    Может быть им назначать доп. параметр, а по нему уже проверять и с таким параметром товары в категории не выводить вообще. Если проверку сделаете правильно, то и пагинация никакая не разрушится. Из карты сайта и поиска товары не пропадут, но в категории точно можно скрыть аккуратно.

    В шаблоне листинга товаров отрезайте сразу при разложении основном массива ненужное и просто не выводите эти элементы. Сам массив при этом "ломать" не надо. Достаточно "просеять".

    {foreach $products as $p}
    {if !$p.params.hide} 
    
    ... тут идет основной код вывода товаров в категории и выведутся только те, которые не имеют hide параметра
    
    {/if}
    {/foreach}

    • +1
      Bulanov.Key Bulanov.Key 20 ноября 2020 14:58 #

      Нет. Скрытие товаров зависит от того, какой товар добавлен в корзину. 

      Если таким образом скрыть товары, то получается на первой странице может быть пусто. Или может быть "не ровное" количество товаров на странице. 

      • +1
        replicant replicant 20 ноября 2020 15:10 #

        Ок. Начнем с нуля. Вам нужно определиться с одной простой штукой для начала.

        Чем отличается товар, который надо скрыть в данный конкретный момент, от товара, который скрывать не надо? Есть у вас какие-то однозначные признаки определения такого товара?

        Т.е. не от чего именно зависит скрывать или нет (это в данном случае как раз не интересно совсем), а как вы отделяете скрываемое от нескрываемого.

        • +1
          Bulanov.Key Bulanov.Key 20 ноября 2020 16:04 #

          Есть 3 товара. У них по несколько артикулов (sku_name (наименование артикула))

          У одного наименование артикулов A, B

          У второго A, B, C

          У третьего B, C

          Если клиент добавил в корзину товар с артикулом A, то товар №3 не должен показываться, потому что у него нет наименование артикула A.

          Если клиент добавил товар с артикулом C, то первый должен скрыться.

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите