Как сменить кодировку переменной в Smarty
если менять в тпл-ке то, брать переменные из смарти, менять кодировку и выводить.
{php}
$items = $this->get_template_vars();
@iconv('UTF-8', 'CP1251', $items['title']);
{/php}
как то так…
{$title:'UTF-8'} или {$title:'cp1251'}
не знаю на сколько это правильно, но как то преобразовывал переменную в шабе и выдавало ерунду, пока не указал в конце через: ту кодировку в которой была сама строка!)
Не получается так smarty ругается на синтаксис.попробуй что то вроде {$title:'UTF-8'} или {$title:'cp1251'} не знаю на сколько это правильно, но как то преобразовывал переменную в шабе и выдавало ерунду, пока не указал в конце через: ту кодировку в которой была сама строка!)
forlord, так тоже не получается, у меня масив это SimpleXMLElement чтоб потятней было кусочек кода дам с вставкой вашей функции как я делал.
$xml = new SimpleXMLElement($data); $xml = $model->conv($xml);
xeqtr, тут нужно знать ещё структуру xml документа, чтобы обращаться напрямую к свойствам объекта $xml. Если применить метод, предложенный forlord-ом к объекту любой структуры, то его нужно немного модифицировать:
Не проверял, но вроде должно работать )
закинуть в /includes/smarty/libs/plugins/modifier.convert.php (кодировку самого файла меняйте согласно версии)
Использование в шаблоне:
{$templ_var|convert:'UTF-8':'CP1251':false}
<?php /* * Smarty plugin * ------------------------------------------------------------- * Файл: modifier.convert.php * Тип: modifier * Имя: convert * Назначение: Конвертация из одной кодировки в другую функцией iconv или mb_convert_encoding. * Использование в шаблоне: {$templ_var|convert:'UTF-8':'CP1251':false} * ------------------------------------------------------------- */ function smarty_modifier_convert( $string, $from = 'UTF-8', $to = 'CP1251', $mb = false ) { if (!$mb){ } else { } return $conv_string; } ?>
Круто, я и не догадывался что так можно)Напишите свой модификатор для Smarty
Оказывается Smarty удобнее чем я думал)
Спасибо…