在 Smarty 模板的 jQuery 语句中包含 PHP 文件
Including a PHP file inside a jQuery statement within a Smarty template
如果使用 Smarty 模板在 jQuery 中应用条件,我想包含一个文件
我的代码:
{literal}
<script>
if (window.matchMedia('(max-width: 767px)').matches) {
// here is the include file
{include= file.tpl}
}
</script>
{/literal}
我有好消息也有坏消息。首先,坏消息:这个代码永远不会工作,因为你的 Smarty 模板已经在服务器上进行了评估,以便生成 HTML 并将它发送到浏览器和你的 Javascript 代码只有在请求响应浏览器后才会被评估。因此,{include= file.tpl}
将生成到您的 HTML 中,特别是生成到您的 script
标签中,从而产生不需要的结果。
好消息是这个问题是可以解决的。解决方案可以是
生成文字 HTML 并默认隐藏它
在这种情况下,如果满足条件,您可以更改文字模板的 display
CSS 属性。
或者,您可以在需要时 POST 获取文字
如果 JS 条件为真,那么您可以发送 AJAX post 到服务器,服务器将使用模板进行响应。
终于可以使用媒体查询了
如果这仅关于样式,那么您可以使用[媒体查询][1]。
您还可以使用 link
标记的 media
属性加载正确的样式表。
[1]: https://www.w3schools.com/css/css_rwd_mediaqueries.asp
尝试:
{literal}
<script>
if (window.matchMedia('(max-width: 767px)').matches) {
{/literal}{include= file.tpl}{literal}
}
</script>
{/literal}
如果使用 Smarty 模板在 jQuery 中应用条件,我想包含一个文件 我的代码:
{literal}
<script>
if (window.matchMedia('(max-width: 767px)').matches) {
// here is the include file
{include= file.tpl}
}
</script>
{/literal}
我有好消息也有坏消息。首先,坏消息:这个代码永远不会工作,因为你的 Smarty 模板已经在服务器上进行了评估,以便生成 HTML 并将它发送到浏览器和你的 Javascript 代码只有在请求响应浏览器后才会被评估。因此,{include= file.tpl}
将生成到您的 HTML 中,特别是生成到您的 script
标签中,从而产生不需要的结果。
好消息是这个问题是可以解决的。解决方案可以是
生成文字 HTML 并默认隐藏它
在这种情况下,如果满足条件,您可以更改文字模板的 display
CSS 属性。
或者,您可以在需要时 POST 获取文字
如果 JS 条件为真,那么您可以发送 AJAX post 到服务器,服务器将使用模板进行响应。
终于可以使用媒体查询了
如果这仅关于样式,那么您可以使用[媒体查询][1]。
您还可以使用 link
标记的 media
属性加载正确的样式表。
[1]: https://www.w3schools.com/css/css_rwd_mediaqueries.asp
尝试:
{literal}
<script>
if (window.matchMedia('(max-width: 767px)').matches) {
{/literal}{include= file.tpl}{literal}
}
</script>
{/literal}