Если товар в категории, то... (и в подкатегории) Есть решение

Добрый день. На старом webasyst 3 была такая конструкция:

{if $product_category_path[1][0] eq 695 || $product_category_path[1][0] eq 1043}
Один текст
{else}
другой текст
{/if}

То есть если мы находимся в товаре (категории) определенных двух категорий (695 и 1043) и всех их подкатегориях - один текст, в остальных - другой. Как это реализовать в webasyst 7. Спасибо.

9 ответов

  • 2

    в category.html в самый низ

    {if $category.id == 695 || $category.parent_id == 1043}
    <script>
        $('.класс_блока_с_телефоном').html('текст для замены')
    </script>
    {/if}

    В product.html в самый низ

    {if $product.categories[$product.category_id].id == 695 || $product.categories[$product.category_id].parent_id == 1043}
    <script>
        $('.класс_блока_с_телефоном').html('текст для замены')
    </script>
    {/if}

    Это наиболее изящьное решение. В противном случае необходимо кучу условий писать

  • 2
    {$cat = $wa->shop->category($product.category_id)}
    {if $cat.id == 695 || $cat.parent_id == 1043}
  • 2

    Еще вариант (более предпочтительный)


    {if $product.categories[$product.category_id].id == 695 || $product.categories[$product.category_id].parent_id} == 1043}
    • +1
      sergfes sergfes 2 августа 2016 13:06 #

      Во время срабатывания условия при id 695 (второй вариант, более предпочтительный) - выводит кусочек (обрывок) кода

      == 1043}

      А в категории 1043 не срабатывает.

      И еще ньюанс: ни первый ни второй вариант не срабатывает в категории, а только внутри товара.

  • 2

    в категории нужен другой код
    опечатка была в прошлый раз

    вот правильно


    {if $product.categories[$product.category_id].id == 695 || $product.categories[$product.category_id].parent_id == 1043}
  • 2

    для категории

    {if $category.id == 695 || $category.parent_id == 1043}
  • 1
    sergfes 2 августа 2016 13:44 #

    Получился вот такой монстр:

    {if $product.categories[$product.category_id].id == 695 || $product.categories[$product.category_id].id == 1043 || $product.categories[$product.category_id].parent_id == 695 || $product.categories[$product.category_id].parent_id == 1043 || $category.id == 695 || $category.parent_id == 695 || $category.id == 1043 || $category.parent_id == 1043}

    Но! Условие работает только для первой подкатегории. В подкатегории подкатегории условие не срабатывает. Как прописать для всех подкатегорий (первого, второго, третего, четвертого уровня, ....)?

    Извините, думал в новом webasyst проще будет это сделать.

  • 1
    sergfes 2 августа 2016 14:00 #

    Извините. Про категориях 3, 4, 5 уровня не сказал. Тупанул.

    Я вывожу телефоны в шапке, взависимости от нахождения клиента, поэтому все в куче (и для товара и для категории). До второго уровня куча работает.

    Конечно бы хотелось более эстетичного решения.

  • 1

    что-то мне подсказывает, что вообще неверный подход выбран

  • 1
    sergfes 3 августа 2016 10:29 #

    Представители Webasyst!

    Неужели не существует изящного решения?

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

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