1

Тема: Вывод свойств товаров на странице категории

Задача: нужно на странице категории где товары все выводятся, выводить вместо описания свойства товара каждого.

Сейчас в шаблоне построена такая конструкция:

{if !$opi_widget && !$opi_compare && !$opi_defaultItem && !$opi_wishListPage}
<div class="frame-without-top">
    <div class="no-vis-table">
        <!--Start. Description-->
        {if trim($p->getShortDescription()) != ''}
        <div class="short-desc">
            {echo strip_tags($p->getShortDescription())}
        </div>
        {elseif $props = ShopCore::app()->SPropertiesRenderer->renderPropertiesInlineNew($p->getId())}
        <div class="short-desc">
            <p>{echo $props}</p>
        </div>
        {/if}
        <!-- End. Description-->
    </div>
</div>
{/if}

Но свойства не выводятся. Выводятся только краткие описания, а если нет краткого описания товара, то свойства не выводятся.
Где копать?

Thumbs up Thumbs down

2

Re: Вывод свойств товаров на странице категории

Там выводятся свойства при отображении категории в виде списка и включенном "Главное свойство" в настройке свойств.

Профессиональное создание сайтов любой сложности, аудит, продвижение, а также поддержка вашего интернет ресурса - web2life.ru

TIMEWEB > Всегда больше, чем просто хостинг для ImageCMS!

3

Re: Вывод свойств товаров на странице категории

Поставил нужным свойствам "Главное свойство" и... ничего... Даже при просмотре данной категории в виде списка...

Thumbs up Thumbs down

4

Re: Вывод свойств товаров на странице категории

Попробовал методом

$props = ShopCore::app()->SPropertiesRenderer->renderPropertiesInlineNew($p->getId())

вывести на странице продукта свойства - тоже пусто.

Хотя в табличной форме выводится прекрасно.

Thumbs up Thumbs down

5

Re: Вывод свойств товаров на странице категории

В one_product_item.tpl наваял такое, чисто для эксперимента:

<!-- {$props = ShopCore::app()->SPropertiesRenderer->renderPropertiesInlineNew($p->getId())} -->
<!-- {echo $props} -->
<!-- {print($p->getId());} -->

Вторая строка по идее в комментарии в html исходнике страницы должна вывести свойства, но не выводит.
Но третья строчка которой я поставил печататся ID товара - айди товара выводится идеально.

Причем данная функция не работает даже на странице индивидуального товара.

Почему эта функция не работает? Где копать? Может кто сталкивался?

Thumbs up Thumbs down

6

Re: Вывод свойств товаров на странице категории

Возможно ошибка в методе renderPropertiesInlineNew()
Лучше используйте метод renderPropertiesArray для вывода свойств.

{$params = ShopCore::app()->SPropertiesRenderer->renderPropertiesArray($model, true)}

Если второй параметр true, будут возвращаться только те значения у которых выбрана опция "Главное свойство"
Если false - все характеристики

Функция возвращает массив свойств, то-есть после ее использования нужно в цикле перебрать все свойства и вывести их в удобном для вас формате

{$params = ShopCore::app()->SPropertiesRenderer->renderPropertiesArray($model, true)}
{if count($params ) > 0}
    <div class="params">
      {foreach $params as $param}
        <div class="params__item">
          <div class="params__key">{$param.Name}</div>
          <div class="params__val">{$param.Value}</div>
        </div>
      {/foreach}
    </div>
  {/if}
ImageCMS Lead Front End Developer

Thumbs up +1 Thumbs down

7

Re: Вывод свойств товаров на странице категории

Что должно передаваться в качестве аргумента вместо $model? ID товара?

Вот мой код из шаблона one_product_item.tpl

<div class="frame-without-top">
    <div class="no-vis-table">
        <!-- Start. Description -->
        {if trim($p->getShortDescription()) != ''}
        <div class="short-desc">
            {echo strip_tags($p->getShortDescription())}
        </div>
        {else:}
        {if $CI->core->core_data['data_type'] == 'shop_category'}
        {$paramparam = ShopCore::app()->SPropertiesRenderer->renderPropertiesArray($model, false)}}
        <div class="short-desc">
        {foreach $paramparam as $paramit}
            <p>{$paramit.Name}: {$paramit.Value}</p>
        {/foreach}
        </div>
        {/if}
        {/if}
        <!-- End. Description-->
    </div>
</div>

И вот что выводится:

Message: Argument 1 passed to SPropertiesRenderer::renderPropertiesArray() must be an instance of SProducts, instance of Propel\Runtime\Collection\ObjectCollection given, called in P:\home\test1.ru\www\system\cache\templates_c\62ff37a23da036b3f30b0caca846330d.php on line 324 and defined

Filename: classes/SPropertiesRenderer.php

Line Number: 429

Thumbs up Thumbs down

8

Re: Вывод свойств товаров на странице категории

Все, разобрался. Вместо $model подставил $p - заработало.

Опция "Главное свойство" - получается нужно включать только для тех свойств которое нужно отображать. Что вообще означает эта метка "Главное свойство"? На что-то еще влияет эта опция?

Thumbs up Thumbs down

9

Re: Вывод свойств товаров на странице категории

Опция "Главное свойство" сделано для того, что бы можно была вывести отдельно, с большим акцентом, ключевые свойства товара. Например на странице списка товаров - http://prntscr.com/cmydlz или на карточке на более видном месте - http://prntscr.com/cmydu4 что бы пользователь быстро с ними ознакомился.
А уже все свойства выводить отдельно - http://prntscr.com/cmye83 на карточке товара, уже для подробного изучения товара

ImageCMS Lead Front End Developer

Thumbs up Thumbs down

10

Re: Вывод свойств товаров на странице категории

Я понял. Спасибо за помощь.

Но Вы все-таки разберитесь с renderPropertiesInlineNew() - а то получается, что функция есть и есть конкретное предназначение, а не работает.

Thumbs up Thumbs down

11

Re: Вывод свойств товаров на странице категории

Да, обязательно посмотрим в чем проблема. Спасибо.

ImageCMS Lead Front End Developer

Thumbs up Thumbs down