Как отобразить характеристики товара при просмотре категорий?

Товар в категориях стандартно отображает только "Цену", "Название", "Краткое описание"

Как еще отобразить "Наличие в магазине", "Артикул", "Оценки" а так же возможность добавить в список сравнения

5 ответов

  • 1
    {$p = $wa->shop->product($product_id)}
    {if $p.features}
    <table class="features" id="product-features">
    <col width="35%">
    <col width="65%">
    {foreach $p.features as $f_code => $f_value name=features}
    <tr class="{if $features[$f_code].type == 'divider'}divider{/if}}">
    <td class="name" width="45%">
    <span>{$features[$f_code].name|escape}</span>
    </td>
    <td class="value" itemprop="{$f_code|escape}">
    {$f_value}
    </td>
    </tr>
    {/foreach}
    </table>
    {/if}
    • 0
      вместо $product_id ставьте свой
    • +2
      Михаил Ушенин Михаил Ушенин Webasyst 24 марта 2014 04:52 #
      Нелишним будет добавить, что такой код может довольно значительно повысить нагрузку на базу данных, т. к. для каждого товара на странице категории будет выполняться несколько запросов, которые необходимы для выполнения метода $wa->shop->product(). Грамотнее было бы написать метод (хелпер), в который один раз передать весь массив товаров, "обогатить" этот массив нужными данными и вернуть "обогащённый" массив обратно в шаблон, где и отобразить дополнительные данные, добавленные в массив товаров с помощью такого метода. Соответственно, в коде метода постараться максимально экономными средствами получить нужные данные без выполнения лишних SQL-запросов.

      Но ваш вариант, конечно, проще в реализации — если его использование не слишком нагрузит сервер БД, то в принципе можно им и ограничиться.
    • 0
      B2ron B2ron 20 октября 2014 07:43 #
      У меня данный код выводит только значение характеристики, но её название.
  • 1
    Websiter 24 марта 2014 15:11 #
    Остальное в процессе написания, путем проб и ошибок

    Вот, если кому поонадобится, как вывести звездочки
    <span class="rating nowrap" itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating" title="{sprintf('[`Average user rating: %s / 5`]', $p.rating)}">
    {$wa->shop->ratingHtml($p.rating, 16)}
    <span itemprop="ratingValue" style="display: none;">{$p.rating}</span>
    <span itemprop="reviewCount" style="display: none;">{$reviews_total_count}</span>
    </span>
  • 0
    Websiter 24 марта 2014 05:14 #
    Т.к. боюсь, нагрузка будет высока, около десятка тысяч товаров размещены на продажу
    • 0
      Михаил Ушенин Михаил Ушенин Webasyst 24 марта 2014 06:04 #
      Решающее значение имеет не общее количество товаров в магазине, а среднее количество товаров, отображаемых на странице категории, и посещаемость сайта.
      • 0
        Websiter Websiter 24 марта 2014 09:16 #
        варианты 16 и 32, при просмотре методом thumbs
        и 30-60 при просмотре таблицей
  • 0
    Websiter 24 марта 2014 09:19 #
    в таком случае потребуется хелпер, либо можно обойтись вариантом Дмитрия?
    • 0
      Михаил Ушенин Михаил Ушенин Webasyst 24 марта 2014 09:51 #
      Допустим любой из этих вариантов. Написание своего хелпера может потребоваться лишь в случае роста значительного нагрузки на сервер баз данных для внедрения более "экономного" алгоритма извлечения дополнительных данных о товаре. В качестве альтернативы можно также рассмотреть переезд на более производительный сервер. Предлагаю для начала попробовать простой вариант — вполне возможно, что он вас более чем устроит. Если вам не понравится его эффективность, заказывайте более сложный, но менее ресурсозатратный.
  • 0
    Websiter 24 марта 2014 15:10 #
    В общем, с помощью хелпера пока что удалось вывести только оценку товара

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

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