Тема: Вывод характеристики в произвольном месте

Здравствуйте!

Как можно вывести характеристику в произвольном месте карточки товара, при этом скрыть ее из общего списка характеристик?

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

2 Отредактировано Андрей (18.04.2016 15:32:09)

Re: Вывод характеристики в произвольном месте

Дмитрий пишет:

Здравствуйте!

Как можно вывести характеристику в произвольном месте карточки товара, при этом скрыть ее из общего списка характеристик?


Это можно сделать так:
Вывести всё кроме, той что надо скрыть:

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

{if !$property.hidden && !$property.id==347} {* Если хар-ка не скрыта и её id НЕ равен, той что мы НЕ хотим выводить*}
      {* Здесь код для вывода характеристик*}
      {$property.title}
      {$property->textView()} {$property.unit}
{/if}

      {/foreach}
{/foreach}    

Вывод только той, что нужно вывести
В любом месте карточки товара вставляем код:

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

{if !$property.hidden && $property.id==347} {* Если хар-ка не скрыта и её id РАВЕН, той что мы ХОТИМ выводить*}
      {* Здесь код для вывода ЭТОЙ характеристики*}
      <b>{$property.title}<b>
      <span>{$property->textView()} {$property.unit}</span>
{/if}

      {/foreach}
{/foreach}    

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

Re: Вывод характеристики в произвольном месте

Спасибо за подробный и быстрый ответ! Буду пробовать.

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

Re: Вывод характеристики в произвольном месте

А может есть в CMS какая то готовая функция которая выводит значение характеристики по ее id? Или только способ описанный выше?

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

5 Отредактировано Закусило Александр (08.07.2016 12:03:43)

Re: Вывод характеристики в произвольном месте

А может есть в CMS какая то готовая функция которая выводит значение характеристики по ее id? Или только способ описанный выше?

Конечно есть:
Если у нас есть объект товара то можно так:

{$product->getPropertyValueById(идентификатор нужной характеристики)} {* Получить значение по id *}
{$product->getPropertyValueByTitle('имя нужной характеристики')} {* Получить значение по названию характеристики *}

Единственное, нужно предварительно наполнить товар характеристиками. Если у Вас используется в коде только один экземпляр товара, например в карточке товара (правда в карточке уже характеристики подгружены) перед вызовом метода, нужно вызвать метод:

{$product->fillProperty()} {* Наполняет характеристиками товар *}

Если у Вас есть несколько или множество товаров, то есть установка массовая характеристик товарам. Например так:

{$list=$this_constroller->api->addProductsProperty($list)}

где $list - массив с товарами,
а в api содержится экземпляр класса \Catalog\Model\Api

Re: Вывод характеристики в произвольном месте

Супер! Спасибо )

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

Re: Вывод характеристики в произвольном месте

А подскажите, в smarty просто новичок и не соображу. Как сделать замену в значении характеристики через replace

т.е. допустим у меня характеристика {$product->getPropertyValueById(3)} и мне при выводе в ней надо заменить '/watch?v=' на '/embed/'

Аналог в php выглядит так

str_replace("/watch?v=","/embed/", $product->getPropertyValueById(3));

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

8 Отредактировано Закусило Александр (08.07.2016 17:06:48)

Re: Вывод характеристики в произвольном месте

{$mystr=str_replace("/watch?v=","/embed/", $product->getPropertyValueById(3))}

Практически также как и в PHP

Re: Вывод характеристики в произвольном месте

О спасибо, супер!
Точку с запятой только там лишняя

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

Re: Вывод характеристики в произвольном месте

Убрал.

11 Отредактировано Илья (06.08.2019 22:09:50)

Re: Вывод характеристики в произвольном месте

Вставка этого кода

{$product->fillProperty()}

выводит надпись "Array", как от неё избавиться?

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

12

Re: Вывод характеристики в произвольном месте

{$product->fillProperty()|devnull}

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

13

Re: Вывод характеристики в произвольном месте

admin пишет:
{$product->fillProperty()|devnull}

Спасибо

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