Тема: Вывод характеристики в произвольном месте
Здравствуйте!
Как можно вывести характеристику в произвольном месте карточки товара, при этом скрыть ее из общего списка характеристик?
Форум ReadyScript Вопросы по созданию тем оформления Вывод характеристики в произвольном месте
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Здравствуйте!
Как можно вывести характеристику в произвольном месте карточки товара, при этом скрыть ее из общего списка характеристик?
Здравствуйте!
Как можно вывести характеристику в произвольном месте карточки товара, при этом скрыть ее из общего списка характеристик?
Это можно сделать так:
Вывести всё кроме, той что надо скрыть:
{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}
Спасибо за подробный и быстрый ответ! Буду пробовать.
А может есть в CMS какая то готовая функция которая выводит значение характеристики по ее id? Или только способ описанный выше?
А может есть в CMS какая то готовая функция которая выводит значение характеристики по ее id? Или только способ описанный выше?
Конечно есть:
Если у нас есть объект товара то можно так:
{$product->getPropertyValueById(идентификатор нужной характеристики)} {* Получить значение по id *}
{$product->getPropertyValueByTitle('имя нужной характеристики')} {* Получить значение по названию характеристики *}
Единственное, нужно предварительно наполнить товар характеристиками. Если у Вас используется в коде только один экземпляр товара, например в карточке товара (правда в карточке уже характеристики подгружены) перед вызовом метода, нужно вызвать метод:
{$product->fillProperty()} {* Наполняет характеристиками товар *}
Если у Вас есть несколько или множество товаров, то есть установка массовая характеристик товарам. Например так:
{$list=$this_constroller->api->addProductsProperty($list)}
где $list - массив с товарами,
а в api содержится экземпляр класса \Catalog\Model\Api
А подскажите, в smarty просто новичок и не соображу. Как сделать замену в значении характеристики через replace
т.е. допустим у меня характеристика {$product->getPropertyValueById(3)} и мне при выводе в ней надо заменить '/watch?v=' на '/embed/'
Аналог в php выглядит так
str_replace("/watch?v=","/embed/", $product->getPropertyValueById(3));
{$mystr=str_replace("/watch?v=","/embed/", $product->getPropertyValueById(3))}
Практически также как и в PHP
О спасибо, супер!
Точку с запятой только там лишняя
Вставка этого кода
{$product->fillProperty()}
выводит надпись "Array", как от неё избавиться?
{$product->fillProperty()|devnull}
{$product->fillProperty()|devnull}
Спасибо
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форум ReadyScript Вопросы по созданию тем оформления Вывод характеристики в произвольном месте