Скажите smarty, чтобы распечатать блок как есть - PullRequest
1 голос
/ 11 июня 2010

Мне нужно вставить некоторый код javascript в файлы шаблонов Smarty, и эти вещи {ldelim} {rdelim} меня убивают. Есть ли способ сказать smarty игнорировать разметку для блока и просто выводить ее как есть? Что-то похожее на блоки CDATA в xml?

На всякий случай: вот как теперь выглядит простой javascript:

$(function() {ldelim}
        $( "#slides" ).accessNews({ldelim}
            speed :  "{$speed}",
            slideBy : 1
        {rdelim});    
{rdelim});

жутко хе?

Ответы [ 2 ]

4 голосов
/ 11 июня 2010

Повторное обновление: Вы можете использовать {literal} .... insert content here {/literal}, чтобы отключить разбор переменных Smarty для целых блоков.

Старый ответ: Мне нравится менять символы-разделители по умолчанию на что-то другое по этой причине. (Насколько я знаю, это может быть сделано только для всего проекта, так что вам придется посмотреть, подходит ли он вам.)

Например, до

<( $variablename )>

(просто мой личный фаворит, используйте все, что вам подходит)

Переменные для изменения - это свойства rightDelimiter и leftDelimiter. Документация

$smarty = new Smarty();
$smarty->left_delimiter =  '<(';
$smarty->right_delimiter = ')>';
2 голосов
/ 22 июня 2010

Использование тега {literal} полезно в этом случае, но, как сказал Пекка, очень неприятно закрывать и начинать теги каждый раз, когда вы хотите вставить переменную.Вы можете изменить символы разделителя в Smarty, но это не так хорошо, если у вас уже есть много шаблонов.

Команда Smarty решила эту проблему в Smarty 3. Больше нет тегов {literal}, и шаблон работает нормально.Может быть, вы могли бы попробовать обновить его.

...