Имя категории в list-thumbs

Привет.

Я в list-thumbs для каждого объекта пытаюсь вывести название категории к которой он относится.

Подскажите как это можно сделать?

{wa_dumpc($p)} выдает category_id => '2'

Как я могу до вывода списка товаров получить массив с категориями?

Или каждый раз в цикле обращаться к функции передавая ей category_id => '2' и получать название категории.

2 ответа

  • 2

    Для каждой задачи есть решение, тут все просто:

    перед строкой:

    {foreach $products as $p}

    вставляем строку:

    {$categories = $wa->shop->categories(0, null, false)}

    а далее в цикле(уже после строки: {foreach $products as $p}, но до строки: {/foreach}) используем конструкцию:

    {$categories[$p.category_id].name}

    *это упрощенный вариант подходит для товаров которые принадлежат одной категории, расширить его до варианта когда товар принадлежит нескольким категориям не трудно.

    • +1
      Viktor Viktor Viktor Viktor 7 октября 2015 13:44 #

      Спасибо, Александр.

      Скажите а нагрузка не сильная на базу?

      А еще мне понадобился вывод дополнительных характеристик для товара. В списке товаров. Это не сильно долго будет грузится при большом кол-ве объектов?

      {$pt = $wa->shop->product($p)}

      {wa_dumpc($pt.features)}



      • +1

        Нагрузка с выводом имен категорий будет минимальна, массив категорий выбирается единожды, данные кешируются, в цикле вы работает с массивом.

        А вот следующий вопрос уже не есть хорошо, посмотрите реализацию вывода дополнительных характеристик в шаблоне Дефолт 3.0(файл list-thumbs.html, если не ошибаюсь), по множественным просьбам пользователей данный функционал был добавлен в общий хелпер.

    • +1
      Артем S Артем S 25 сентября 2018 16:39 #

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

      в категории и на главной все выводиться, но на сайте есть скрытые категории ( но товары в них опубликованы) и в этом случае выводиться ошибка что не существует этого индекса.

      Как быть ? не хочется отключать товары из скрытой категории, а сделать им надпись что нет в наличии если category.status = 0

  • 1
    Rat Партнер-разработчик 6 октября 2015 07:27 #

    Неприкрытый пиар платного плагина, который, кроме прочего, умеет отображать названия основных категорий товаров в списке, а также ссылки на эти категории: https://www.webasyst.ru/store/plugin/shop/listfeatures/.

    • +1
      Viktor Viktor Viktor Viktor 6 октября 2015 07:33 #

      Друг ты молодец, есть ли у тебя подсказка для решения проблемы? У меня не такие глубокие познания, поэтому прошу о помощи.

      • +1
        Rat Rat Партнер-разработчик 6 октября 2015 10:38 #

        В качестве подсказки предлагаю 2 варианта реализации описанного (мне лично больше нравится 2-й):

        1. Один раз вызвать статический метод-хелпер, в который передать массив id всех товаров списка и потом в цикле foreach в шаблоне отображать значение для id текущего товара.
        2. Вызывать статический метод-хелпер в каждой итерации цикла, передавая в метод id текущего товара и массив id всех товаров. В самом хелпере получить данные для всех id товаров только при первом вызове и сохранить результат в статическую переменную, а при последующих вызовах только отдавать данные для id текущего товара.
        • +1
          Viktor Viktor Viktor Viktor 6 октября 2015 13:51 #

          Спасибо большое! Только вот документация совсем никакая. Каким хелпером это вывести не понимаю.

          • +1
            Rat Rat Партнер-разработчик 7 октября 2015 02:03 #

            Дело не в документации, а в отсутствии хелпера. Его нужно написать самому.

            • 0
              Viktor Viktor Viktor Viktor 7 октября 2015 02:22 #

              Тоесть стандартными средствами я это не выведу? Что же это за система управления такая. Где ни документации и нихрена. Смотришь тему видишь функцию а описания нет.

              • +1
                Михаил Ушенин Михаил Ушенин Webasyst 7 октября 2015 04:10 #

                Если есть желание добавить какую-то функцию, напишите об этом в нашем Центре поддержки, выбрав вариант "Предложить идею". Все идеи рассматриваются и учитываются. Наиболее актуальные и востребованные со временем реализуются.

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

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