0

Smarty 2 テンプレート ファイルに次の JavaScript ブロックがあります。

コードはプロバイダーから提供されたものに忠実ですが{ldelim}{rdelim}JavaScript{}.

をフィードする必要がありますが$log_id、これは変更されませんが、これらすべてのタグを必要とせずにこのクリーナーを記述して、コードを読みにくくする方法はありますか?

タグは認識していますが、その{literal}タグを開いたり閉じたりすると、間違いなく読みにくくなります。

<script type='text/javascript'>
    window.Muscula = {ldelim} settings:{ldelim}
        logId:"{$log_id}", suppressErrors: false, branding: 'none'
    {rdelim}};
    (function () {ldelim}
        var m = document.createElement('script'); m.type = 'text/javascript'; m.async = true;
        m.src = (window.location.protocol == 'https:' ? 'https:' : 'http:') +
            '//musculahq.appspot.com/Muscula.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(m, s);
        window.Muscula.run=function(c){ldelim}eval(c);window.Muscula.run=function(){ldelim}{rdelim};{rdelim};
        window.Muscula.errors=[];window.onerror=function(){ldelim}window.Muscula.errors.push(arguments);
        return window.Muscula.settings.suppressErrors===undefined;{rdelim}
    {rdelim})();
</script>
4

1 に答える 1

3

その場合は、smarty 区切り文字を変更することができます

http://www.smarty.net/docsv2/en/language.escaping.tpl

<?php

$smarty->left_delimiter = '{{';
$smarty->right_delimiter = '}}';

$smarty->assign('log_id', 'something');

?>

テンプレートは次のようになります。

(変数 {{$variable}} の二重括弧に注意してください)

<script type='text/javascript'>
    window.Muscula = { settings:{
        logId:"{{$log_id}}", suppressErrors: false, branding: 'none'
    } };
    (function () {
        var m = document.createElement('script'); m.type = 'text/javascript'; m.async = true;
        m.src = (window.location.protocol == 'https:' ? 'https:' : 'http:') +
            '//musculahq.appspot.com/Muscula.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(m, s);
        window.Muscula.run=function(c){eval(c);window.Muscula.run=function(){};};
        window.Muscula.errors=[];window.onerror=function(){window.Muscula.errors.push(arguments);
        return window.Muscula.settings.suppressErrors===undefined;}
    })();
</script>
于 2013-04-12T16:53:09.933 に答える