在 Smarty 模板的 jQuery 语句中包含 PHP 文件

Posted

技术标签:

【中文标题】在 Smarty 模板的 jQuery 语句中包含 PHP 文件【英文标题】:Including a PHP file inside a jQuery statement within a Smarty template 【发布时间】:2021-12-26 14:49:26 【问题描述】:

如果使用 Smarty 模板在 jQuery 中应用条件,我想包含一个文件 我的代码:

literal
<script>
      if (window.matchMedia('(max-width: 767px)').matches) 
    // here is the include file
    include= file.tpl
        
</script>
/literal

【问题讨论】:

我正在考虑以两种方式来做到这一点: A. 将您的文件包含在隐藏的 div 中,并在条件匹配时显示它。 B.如果条件匹配,做一个ajax请求,接收你想要的内容,并显示出来。 【参考方案1】:

我有好消息和坏消息。首先,坏消息:这个代码永远不会工作,因为您的 Smarty 模板已经在服务器上进行了评估,以便生成 html 并将其发送到浏览器,并且您的 javascript 代码只有在请求完成后才会被评估响应浏览器。因此,include= file.tpl 将生成到您的 HTML 中,特别是生成到您的 script 标记中,从而产生不需要的结果。

好消息是问题是可以解决的。解决办法可以是

生成您的文字 HTML 并默认隐藏它

在这种情况下,如果满足条件,您可以更改文字模板的 display CSS 属性。

或者,您可以在需要时直接发布文字

如果 JS 条件为真,那么您可以向服务器发送 AJAX 帖子,服务器将使用模板进行回复。

最后,您可以使用媒体查询

如果这与样式有关,那么您可以使用 [媒体查询][1]。

您还可以使用link 标记的media 属性来加载正确的样式表。 [1]:https://www.w3schools.com/css/css_rwd_mediaqueries.asp

【讨论】:

【参考方案2】:

试试:

literal
<script>
if (window.matchMedia('(max-width: 767px)').matches) 
 /literalinclude= file.tplliteral

</script>
/literal

【讨论】:

以上是关于在 Smarty 模板的 jQuery 语句中包含 PHP 文件的主要内容,如果未能解决你的问题,请参考以下文章

在 django 模板中包含 javascript 的最佳实践

在 vue.js 模板 nuxt 中包含外部脚本

Smarty模板函数

Smarty模板函数

smarty模板函数

在 JavaScript 控制台中包含 jQuery