Условие по ID списка

Добрый день. Подскажите кто-нибудь пожалуйста. Нужен код для вывода условия по ID списка в list-thumbs и product.cart

То есть что я прошу:

{if id списка = список 1}

<div>Бесплатный подъем</div>

{else}

<div>Платный подъем</div>

{/if}

Заранее Большое Спасибо!

9 ответов

  • 1
    replicant 13 мая 2023 18:10 #

    Пока что это всё звучит максимально нелогично. Вы уверены, что эта задача слово в слово именно такова и/или не вырвана из контекста условия другой более четкой задачи?

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

    {$list = $wa->shop->productSet("id_вашего_списка")}
    {if $list}
            {include file="list-thumbs.html" products=$list}
    {/if}

    Список он либо существует в вашей системе товаров, либо не существует. Он либо содержит конкретные товары, либо нет. Вы его просто либо выводите по id, либо не выводите.

    Приведу пример.

    Допустим у нас есть товар и есть шаблон product.cart (часть шаблона страницы товара). Мы не можем проверить список сам по себе, кроме как на существование вообще и только, но можем выяснить не принадлежит ли товар, на странице которого мы находимся, конкретному списку и, если да принадлежит, то вывести одно, а если нет, то что-то другое.

    Но с товаром хоть такое условие можно придумать. А что вы хотите изобразить в list-thumbs решительно непонятно.

    Предполагается, что списки в системе не зарождаются хаотично, поэтому нам и не нужно выполнять странную проверку в шаблонах на id списка лишь потому, что эти id - известный факт.

  • 1
    dato 15 мая 2023 23:10 #

    У меня просто стоит задача: Вывести текстовое значение в карточке товара если список равен = "список 1. "

    То есть я добавил 19 товаров из 30 в список: "список 1", у этих товаров есть бесплатный подъем, а у других нет.

    В каталоге отображаются все 30 товаров, но на 19 должно выводиться текстовое значение "БЕСПЛАТНЫЙ ПОДЪЕМ".  Я как бы и хочу это реализовать.

    • +1
      replicant replicant 16 мая 2023 08:35 #

      Т.е. в итоге как я и предположил выше. Проверять надо товар по условию не состоит ли товар в определенном списке, а не список сам по себе.

      На странице товара т.е. в условном product.cart проверить в списке ли товар можно так (вместо list_id подставить свой id списка)

      {$list = $wa->shop->productSet("list_id")}
      {foreach $list as $l}
          {if $product.id == $l.id}
          <p>ура, товар в списке</p>
          {break}
          {/if}
      {/foreach}


      Но, сама по себе идея ну так себе. Нет, безусловно разместить товар в списке можно и даже весь список товаров с "бесплатным подъемом" как-то можно опубликовать и использовать это знание на витрине, но делать нахождение в этом списке отправной точкой для проверки - слишком затратное занятие для list-thumbs.

      Я бы предложил вам рассмотреть вариант проверки основанный на специальной характеристике и её значениях. Хар-ка Подъем: бесплатный | платный.

      • +1

        {$list = $wa->shop->productSet("list_id")}
        {foreach $list as $l}
             {if $product.id == $l.id}
                      <p>ура, товар в списке</p>
                      {break}
             {/if}
        {/foreach}

        Концептуально все так, но перебор значений - относительно ресурсоемкая операция.

        Вероятно, как-то так будет быстрее

        {$list = $wa->shop->productSet("list_id")}
        {if in_array($product.id, array_column($list, "id"))
                      <p>ура, товар в списке</p>
        {/if}

        P.S. Ориентировался исключительно на приведенный код не проверяя форматы, структуры и пр.

        • +1
          replicant replicant 16 мая 2023 23:28 #

          Да, скорее всего так будет лучше. В рамках небольшого списка на странице товара разницу не заметить и всё будет на уровне погрешности, но, если такое применять для кучи в условном list-thumbs и когда товаров много, то очевидно на круг что-нибудь да накапает. Глазами конечно не определить разницу, но в такое иногда "надо просто верить". Где-то на просторах сети встречал давно сравнение foreach vs. in_array... ну и т.д. и т.п.


          P.S. Мне сама идея проверки товара в списке не нравится т.к. сам по себе список  - весьма обширная штуковина, которая содержит как-то много всего сразу и многое не по делу. Оно в админке вроде бы логично выглядит, когда специальный список создан для каких-то выдающихся товаров и они там красиво лежат, но просится тут почему-то именно характеристика.

  • 1
    replicant 16 мая 2023 09:19 #

    Для list-thumbs код аналогичный, но там обычно $product.id меняется на $p.id.

    P.S. С характеристикой, имхо, будет лучше. Хотя, если товаров всего 30, а в списке 19, то попробуйте.

  • 1
    dato 16 мая 2023 15:34 #

    "но можем выяснить не принадлежит ли товар, на странице которого мы находимся, конкретному списку и, если да принадлежит, то вывести одно, а если нет, то что-то другое." вот этот код я как раз и прошу, видимо объяснять не умею =)

    Большое спасибо за Ваши ответы! 

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

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