Вывести категорию товара в списке на главной

Товары лежат в списке. Список вывожу на главную. Нужно вывести категорию каждого товара в шаблон списка. Желательно вывести категорию 1го уровня каждого товара. Спасибо.

4 ответа

  • 1
    Леонид Вакуленко Webasyst 16 декабря 2014 04:24 #

    Вот такой пример должен вам помочь.

    {foreach $wa->shop->productSet('promo') as $product}

    {$p = $wa->shop->product($product)}
    {wa_dumpc($p.categories)} {* Debug-вывод всего, что мы знаем о категориях этого продукта. *}

    {/foreach}

    Делая так, надо понимать, что вызывать $wa->shop->product() в цикле - это плохая практика. Много запросов к БД получается. Для маленьких списков из 3-5 товаров это нормально, но несколько десятков так выводить на одной странице лучше не надо.

  • 3
    Михаил Ушенин Webasyst 16 декабря 2014 04:36 #

    Способ поэкономнее:

    1. Создайте файл wa-apps/shop/lib/classes/shopCustom.class.php:

    <?php


    class shopCustom

    {

    public static function categoryName($product, $products)

    {

    static $categories;

    if ($product === reset($products)) {

    $category_ids = array();

    foreach ($products as $p) {

    $category_ids[] = $p['category_id'];

    }

    $model = new waModel();

    $sql =

    "SELECT id, name

    FROM shop_category

    WHERE id IN(i:category_ids)

    ";

    $categories = $model->query($sql, array('category_ids' => $category_ids))->fetchAll('id', 1);

    }

    return ifset($categories[$product['category_id']]);

    }

    }

    2. Внутрь цикла перебора товаров в шаблоне вида list-thumbs.html {foreach $products as $p}...{/foreach} добавьте вызов метода {shopCustom::categoryName($p, $products)}

    • +2
      kislinsky@mail.ua kislinsky@mail.ua 14 сентября 2016 14:14 #

      Спасибо! Пожалуйста, подскажите как добавить в этом коде ссылку на категорию? Сейчас отображается только название.

  • 1
    kislinsky@mail.ua 12 октября 2016 13:59 #

    Вот такое решие для вывода ссылки на товар и категорию товара.

    {foreach $products as $p name=foo}

    <a href="{$p.frontend_url}">{$p.name|truncate:50:"..."}</a>

    {$c=$wa->shop->category($p.category_id) }

    <a href="/category/{$c.url}/">{$c.name|truncate:50:"..."}</a>

    {/foreach}

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

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