在Smarty 2模板中消除JavaScript中对{ldelim}和{rdelim}的需要
我在Smarty 2模板文件中有以下JavaScript块 代码与提供者提供给我的代码一字不差,但很明显,我必须在中添加一些在Smarty 2模板中消除JavaScript中对{ldelim}和{rdelim}的需要,javascript,smarty,templating,error-logging,smarty2,Javascript,Smarty,Templating,Error Logging,Smarty2,我在Smarty 2模板文件中有以下JavaScript块 代码与提供者提供给我的代码一字不差,但很明显,我必须在中添加一些{ldelim}和{rdelim}Smarty标记来替换JavaScript{和} 我需要输入$log\u id,这不会改变,但是有没有一种方法可以让我编写这个清理程序,而不需要所有这些标记,从而使代码看起来不那么可读 我知道{literal}标记,但打开和关闭该标记可能会降低可读性 <script type='text/javascript'> win
{ldelim}
和{rdelim}
Smarty标记来替换JavaScript{
和}
我需要输入$log\u 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>
Muscula={ldelim}设置:{ldelim}
logId:“{$log_id}”,suppressErrors:false,branding:'none'
{rdelim}};
(函数(){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(参数);
返回窗口.Muscula.settings.suppressErrors==未定义;{rdelim}
{rdelim})();
在这种情况下,您可以更改smarty分隔符
您的模板将成为:
(注意变量{{$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>
window.Muscula={设置:{
logId:“{{$log_id}}”,suppressErrors:false,branding:'none'
} };
(功能(){
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(参数);
返回窗口.Muscula.settings.suppressErrors==未定义;}
})();
在这种情况下,您可以更改smarty分隔符
您的模板将成为:
(注意变量{{$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>
window.Muscula={设置:{
logId:“{{$log_id}}”,suppressErrors:false,branding:'none'
} };
(功能(){
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(参数);
返回窗口.Muscula.settings.suppressErrors==未定义;}
})();
谢谢,可以用这种方式更改分隔符。然而,我发现这样做会阻止变量$log\u id
被解析,这意味着以下是输出:logId:“{$log\u id}”
。因此,我认为这并不能完全解决我的问题。我尝试过像您的示例中那样更改分隔符,然后添加双大括号-但这仍然解析为logId:“{{$log\u id}}”
。我正在使用Smarty 2.6.9-该版本支持吗?我想支持。你在{literal}标签里面吗?不,我没有{literal}
标签。我从Smarty自己那里得到的反馈是要么使用{literal}
,{ldelim}
标记,要么升级到Smarty 3。遗憾的是,如果没有大量的工作,我无法做到这一点,所以我的模板看起来可能有点笨拙。你能给我们看看你的PHP代码吗?(呈现模板的位置)谢谢,可以用这种方式更改分隔符。然而,我发现这样做会阻止变量$log\u id
被解析,这意味着以下是输出:logId:“{$log\u id}”
。因此,我认为这并不能完全解决我的问题。我尝试过像您的示例中那样更改分隔符,然后添加双大括号-但这仍然解析为logId:“{{$log\u id}}”
。我正在使用Smarty 2.6.9-该版本支持吗?我想支持。你在{literal}标签里面吗?不,我没有{literal}
标签。我从Smarty自己那里得到的反馈是要么使用{literal}
,{ldelim}
标记,要么升级到Smarty 3。遗憾的是,如果没有大量的工作,我无法做到这一点,所以我的模板看起来可能有点笨拙。你能给我们看看你的PHP代码吗?(在其中渲染模板)