Re: Вывод определенной характеристики в каталоге товаров.

Закусило Александр пишет:

Конструкцию правильно вставлять в list_products.tpl

{$list = $this_controller->api->addProductsMultiOffersInfo($list)}
{$list = $this_controller->api->addProductsProperty($list)} {* Вот здесь например! *}
{$list = $this_controller->api->addProductsDirs($list)}

Вставил в это место. Все равно ничего нет.

{foreach from=$product->getPropObjects() item=property} 
                 {var_dump($property.title)}
                 {/foreach}
 

дает NULL NULL NULL NULL
причем количество NULL у разных товаров разное

а такая конструкция

{foreach $product->fillProperty() as $data}
      {foreach $data.properties as $property}
     {var_dump($property.title)}
     {/foreach}
{/foreach}  


дает

string(43) "Гарантия производителя" string(37) "Ценовые предложения" string(12) "Страна" string(31) "Площадь обогрева" string(12) "Монтаж" string(14) "Элемент" string(19) "Тип кабеля" string(16) "Мощность" string(10) "Длина" string(14) "Толщина" string(29) "Греющий элемент" string(36) "Категория в Маркете" string(11) "Type prefix"    


Насколько я понимаю, либо не срабатывает {$list = $this_controller->api->addProductsProperty($list)}
либо  {foreach from=$product->getPropObjects() item=property}
Как можно это проверить, что из них не работает?

Повысить оценку Понизить оценку

Re: Вывод определенной характеристики в каталоге товаров.

Наверно версия движка, но я в это слабо верю.
addProductsProperty - существует из покон веков.
getPropObjects - не так давно добавлен, насколько я помню.

Если
{$list = $this_controller->api->addProductsProperty($list)}
отсутствует, то в $product->getPropObjects() вообще ничего не должно быть.
Скажите, а в самом товаре что даёт в итоге {var_dump($product->getPropObjects())} и {var_dump($product.properties)} ?


Что касается $product->fillProperty() решение правильное, однако, это будет каждый запрос на каждый товар. А хотелось бы один за счёт addProductsProperty.

Возможно я предположу, что у Вас возвращаются характеристики и группы характеристик в одном массиве, поэтому посмотрите, что будет в случает если сделать вот так.

{$list = $this_controller->api->addProductsProperty($list)} {* В нужном месте. *}


{foreach $product->getPropObjects() as $data}
      {foreach $data.properties as $property}
     {var_dump($property.title)}
     {/foreach}
{/foreach}  

28 Отредактировано Владимир 1916 (30.11.2016 23:20:22)

Re: Вывод определенной характеристики в каталоге товаров.

посмотрите, что будет в случает если сделать вот так.

{$list = $this_controller->api->addProductsProperty($list)} {* В нужном месте. *}


{foreach $product->getPropObjects() as $data}
      {foreach $data.properties as $property}
     {var_dump($property.title)}
     {/foreach}
{/foreach}  

выдает

string(43) "Гарантия производителя" string(37) "Ценовые предложения" string(12) "Страна" string(31) "Площадь обогрева" string(12) "Монтаж" string(14) "Элемент" string(19) "Тип кабеля" string(16) "Мощность" string(10) "Длина" string(14) "Толщина" string(29) "Греющий элемент" string(36) "Категория в Маркете" string(11) "Type prefix"         

Повысить оценку Понизить оценку

Re: Вывод определенной характеристики в каталоге товаров.

{var_dump($product->getPropObjects())}

дает все содержимое массива

array(4) { [43]=> array(2) { ["group"]=> object(Catalog\Model\Orm\Property\Dir)#639 (5) { ["_values":protected]=> array(5) { ["id"]=> string(2) "43" ["site_id"]=> string(1) "1" ["title"]=> string(39) "Общие характеристики" ["hidden"]=> string(1) "0" ["sortn"]=> string(2) "32" } ["_self_class":protected]=> string(30) "Catalog\Model\Orm\Property\Dir" ["_local_id":protected]=> int(670) ["cache_behavior_instances":"RS\Behavior\AcceptBehavior":private]=> array(0) { } ["instance_behaviors":"RS\Behavior\AcceptBehavior":private]=> array(0) { } } ["properties"]=> array(3) { [332]=> object(Catalog\Model\Orm\Property\Item)#776 (8) { ["_cache_is_list":protected]=> NULL ["before_this":protected]=> NULL ["slider_data":protected]=> NULL ["_values":protected]=> array(18) { ["id"]=> string(3) "332" ["site_id"]=> string(1) "1" ["xml_id"]=> string(13) "yml_710858798" ["title"]=> string(43) "Гарантия производителя" ["type"]=> string(6) "string" ["sortn"]=> string(3) "337" ["parent_sortn"]=> string(1) "0" ["unit"]=> string(0) "" ["parent_id"]=> string(2) "43" ["hidden"]=> string(1) "0" ["no_export"]=>

........ и так далеее .........

Catalog\Model\Orm\Property\Item" ["_local_id":protected]=> int(522) ["cache_behavior_instances":"RS\Behavior\AcceptBehavior":private]=> array(0) { } ["instance_behaviors":"RS\Behavior\AcceptBehavior":private]=> array(0) { } } } } }     

 

Повысить оценку Понизить оценку

Re: Вывод определенной характеристики в каталоге товаров.

{var_dump($product.properties)} выдает то же что и {var_dump($product->getPropObjects())}

Повысить оценку Понизить оценку

Re: Вывод определенной характеристики в каталоге товаров.

Ну всё отлично, тогда используйте эти циклы совместно с первым моим кодом. Просто Вы мне первый раз неправильное содержимое указали массива поэтому я и не смог определить сразу в чём проблема.

Re: Вывод определенной характеристики в каталоге товаров.

Лучше оборачивать var_dump тегом <pre> тогда сразу будет видно форматирование.

Re: Вывод определенной характеристики в каталоге товаров.

Теперь заработало. Большое спасибо!

Только еще убрал && $prop_value != ''
т.к. у $prop_value там пустое значение было и правило не срабатывало.

Повысить оценку Понизить оценку

Re: Вывод определенной характеристики в каталоге товаров.

Супер. Отлично! Вы молодец.