smarty: модификатор truncate внутри {assign}
#1
Отправлено 27 February 2013 - 12:05 PM
{assign var=aaa value="тут некий текст `$xxx|tuncate:20` и тут тоже"}
или, в минимуме,
{assign var=aaa value=`$xxx|tuncate:20`}
Т.е. с подстановкой $xxx, обрезанного по заданным трункейтом параметрам.
`$xxx|truncate:20` не работает.
Как я понимаю, модификатор применяется именно к переменной, т.е. должен работать в любом месте смарти-кода, вопрос только в правильности синтаксиса. Или я не правильно понимаю?
#2
Отправлено 27 February 2013 - 07:32 PM
А есть ли возможность применить truncate не только в документально описанном виде {$xxx|truncate:20}, но и внутри блока assign, т.е. примерно так:
{assign var=aaa value="тут некий текст `$xxx|tuncate:20` и тут тоже"}
Вот этот вариант сработал у меня: {assign var=aaa value="тут некий текст `$aab|truncate:20` и тут тоже"}
$aab содержало текст: Лучшие автомобили для Вас доступны прямо сегодня
Вывело так: тут некий текст Лучшие автомобили... и тут тоже
надо писать truncate, а не tuncate - опечатка
да и еще для обрезки кирилицы лучше использовать функцию на php с использованием мультибайтной кодировки mb_
#3
Отправлено 27 February 2013 - 10:41 PM
Я от руки набивал, просто для понимания, вкралась опечатка. В правильном виде тоже не работает .надо писать truncate, а не tuncate - опечатка
Вот это штатная строка из ShopCMS-ного product_brief.tpl.html
{assign var="tlink" value="<a href="product_`$product_info.productID`.html">`$product_info.name`</a>"}
а это с добавлением truncate и она выдает `Array.name|truncate:20` вместо обрезанной строки с названием товара
{assign var="tlink" value="<a href="product_`$product_info.productID`.html">`$product_info.name|truncate:20`</a>"}
и даже если я упрощаю до
{assign var="tlink" value="xxx`$product_info.name|truncate:20`xxx"}
то все равно получаю xxx`Array.name|truncate:20`xxx
Может, оно работает в более поздней версии smarty, чем штатно в ShopCMS?
PS. Сейчас строки взяты именно копированием, т.е. точные.
Еще удобнее создать свой модификатор mb_truncate (см. http://www.guyrutenb...ty-mb_truncate/), но в штатном ShopCMS, как мне кажется, это излишне.да и еще для обрезки кирилицы лучше использовать функцию на php с использованием мультибайтной кодировки mb_
#4
Отправлено 28 February 2013 - 01:17 AM
или, в минимуме, {assign var=aaa value=`$xxx|truncate:20`}
Заработает если уберешь обратные кавычки.
Но вот чтобы туда еще ссылку прилепить не знаю как, если добавляешь произвольный текст придется ставить обратные кавычки чтобы выводилось значение переменной, а поставишь кавычки перестанет работать truncate
В общем лично я бы сделал так
{assign var="name" value=$product_info.name|truncate:20} {assign var="tlink" value="<a href="product_`$product_info.productID`.html">`$name`</a>"} {$tlink}
#5
Отправлено 28 February 2013 - 01:22 AM
Ага, я примерно такой ход и предполагал, спрашивая про "в минимуме". Только не догадался обратные кавычки убрать. Не сообразил, что они нужны только когда переменная находится внутри текста. Хотя это-то как раз описано в доке.В общем лично я бы сделал так
#6
Отправлено 28 February 2013 - 09:42 AM
Заработает если уберешь обратные кавычки. Но вот чтобы туда еще ссылку прилепить не знаю как, если добавляешь произвольный текст придется ставить обратные кавычки чтобы выводилось значение переменной, а поставишь кавычки перестанет работать truncate В общем лично я бы сделал такили, в минимуме, {assign var=aaa value=`$xxx|truncate:20`}
{assign var="name" value=$product_info.name|truncate:20} {assign var="tlink" value="<A href="product_`$product_info.productID`.html">`$name`</A>"} {$tlink}
Да, я смотрел в версии Smarty 3. Но не думаю, что с этим что-то изменилось. Если не получается в одной строке кода, всегда можно решить в таком варианте, как 'R.Sergey' написал Я предполагал такой вариант, но всегда хочется с минимумом кода) но не всегда сразу получается
#7
Отправлено 04 March 2013 - 06:56 PM
http://www.smarty.ne...ntax.quotes.tpl