Smarty

Подскажите пожалуйста, где можно немного изменить вывод артикула в карточке товара?

Вывод вот тут делается


{assign var="sku" value="sku_`$obj_id`"}
{$smarty.capture.$sku nofilter}

А где можно артикул перед выводом немного обработать? Ну там вырезать substr() "лишнюю" часть например.

Или как то получить переменную с его значением и там уже её обыграть.

1 лайк

Подскажите пожалуйста, где можно немного изменить вывод артикула в карточке товара?

Вывод вот тут делается


{assign var="sku" value="sku_`$obj_id`"}
{$smarty.capture.$sku nofilter}

А где можно артикул перед выводом немного обработать? Ну там вырезать substr() "лишнюю" часть например.

Или как то получить переменную с его значением и там уже её обыграть.

{assign var="sku" value="sku_`$obj_id`"} {$smarty.capture.$sku|replace:'ЛИШНЯЯЧАСТЬ':'' nofilter}

Попробуйте

Главное, чтобы "ЛИШНЯЯЧАСТЬ" не совпала случайно с тегами HTML и порезала верстку. Так как {$smarty.capture.$sku} содержит не только просто артикул, но и весь кусок HTML кода для отображения артикула

Спасибо, пробую.

в принципе если конкретно , то ситуация такая.

есть артикул чистый 33429-12 , я добавляю к нему код отдела для внутренних требований, так сказать, клиенту это не надо видеть.

В админке получатся так 33429-12 x250, то есть добавка два пробела, символ - x и далее сам код

То есть надо тупо отследить эту последовательность (два пробела и х) и вырезать их и все, что далее. при выводе на экран.

Помаракую с Вашей подсказкой..

пишу (пока дл пробы)

{$smarty.capture.$sku|replace:' x':'' nofilter}

А как сделать, чтобы не только x удалялось , но и все , что после?

А после х могут быть разные значения?

Спасибо, пробую.

в принципе если конкретно , то ситуация такая.

есть артикул чистый 33429-12 , я добавляю к нему код отдела для внутренних требований, так сказать, клиенту это не надо видеть.

В админке получатся так 33429-12 x250, то есть добавка два пробела, символ - x и далее сам код

То есть надо тупо отследить эту последовательность (два пробела и х) и вырезать их и все, что далее. при выводе на экран.

Помаракую с Вашей подсказкой..

Если последовательность может быть разная, то лучше это делать в php после выборки данных по продуктам из базы.

Например, используйте хуки в функции fn_gather_additional_product_data

Он всегда вызывается и на детальной карточке товара, и на списке продуктов

Да последовательность посде х разная, но всегда три знака.

Пока решил вопрос так

|substr_replace:'':'-6'

(два пробела, х и три цифры

на выходных поищу, как это сделать "правильно", то есть при помощи совета

Например, используйте хуки в функции fn_gather_additional_product_data

буду вникать, может потом кому тоже прогожуся..

|substr_replace:'':'-6' тогда нужно применять в common/product_data.tpl, непосредстенно к {$product.product_code}. И сработает только, если длина постфикса действительно всегда 6.

Да последовательность посде х разная, но всегда три знака.

Пока решил вопрос так

|substr_replace:'':'-6'

(два пробела, х и три цифры

на выходных поищу, как это сделать "правильно", то есть при помощи совета

Например, используйте хуки в функции fn_gather_additional_product_data

буду вникать, может потом кому тоже прогожуся..

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

В капче с артикулом вообще полно разных тегов.

В капче с артикулом вообще полно разных тегов.

Речь про последние 6 символов

Речь про последние 6 символов

Ну вот потому и пишу в #8 , что не к капче надо, а в самом common/product_data.tpl править.

Ну вот потому и пишу в #8 , что не к капче надо, а в самом common/product_data.tpl править.

В общем, распечатайте содержимое

{$smarty.capture.$sku|fn_print_r}

и посмотрите, что там в нем. Хотя бы еще длину добавьте. Например

{$smarty.capture.$sku|substr_replace:'':'-6':'-3'}

Я вот так и поступил, заменил {$smarty.capture.$sku|fn_print_r} на {$product.product_code} и там вырезал 6 последних цифирь.

Длина всегда = 6.

не знаю правда , может что испортил?

А где вы это заменили? Если прямо вместо {$smarty.capture.$sku} используете {$product.product_code}, то вы выводите только сам артикул, без верстки-обертки (там несколько вложенных спанов). Не то чтобы в данном случае критично, но может выделяться стилем от остальных надписей на странице.

Я вот так и поступил, заменил {$smarty.capture.$sku|fn_print_r} на {$product.product_code} и там вырезал 6 последних цифирь.

Длина всегда = 6.

не знаю правда , может что испортил?

Все верно, я подумал, что вы из capture вырезаете

да я сделал это в своем, так сказать, шаблоне карточки товара. Я все равно всю карточку переделал и стили там переписал.Все как в уроках. В responsive / templates / addons / my_changes / blocks / product_templates

Всем спасибо!