如何在Smarty模板中直接引入CSS文件且不解析该文件?
在Smarty模板中直接嵌入CSS文件且不解析内容的解决方案
直接使用Smarty的{include}标签并添加parse=false参数就能满足需求,这样Smarty会直接输出文件内容,不会把CSS里的{}当作模板语法解析:
<style>{include file="$ROOT_DIR/public/css/all.css" parse=false}</style>
原理说明
parse=false参数会让Smarty将引入的文件视为纯文本输出,跳过所有模板语法解析,彻底避免CSS中{}符号引发的解析错误。- 这种方式既不用把文件读入变量,也无需修改CSS文件添加
{literal}标签,完全保留了{include}的便捷性。
为何之前的写法无效
- 直接使用
{include "$ROOT_DIR/public/css/all.css"}时,Smarty默认会把引入的文件当作模板解析,CSS里的{}会被识别为模板语法标记,导致解析失败。 - 若在
{include}外层包裹{literal},Smarty会把整个{include}标签当作纯文本输出,无法执行引入文件的逻辑。
内容的提问来源于stack exchange,提问作者Magnus
相关产品推荐
相关产品推荐

