我的网站上有许多基于smarty的小部件。 分离脚本和样式非常重要。
我需要什么:
page.php文件:
{extends file="template.tpl"}
{block name="css"}
<link rel="stylesheet" href="page_style.css" />
{/block}
{block name="content"}
Lalala
{include file="cool_widget.tpl"}
Tratata
{/block}
{block name="js"}
<script src="page_script.js"></script>
{/block}
template.tpl
<link rel="fix.css" />
{block name="css"}{/block}
{block name="content"}{/block}
<script src="jquery.js"></script>
{block name="js"}{/block}
widget.tpl
{block name="css" append}
<link rel="widget.css">
{/block}
{block name="js" append}
<script src="widget.js"></script>
{/block}
<h2>COOL WIDGET HEAR</h2>
我知道我不能在里面制作积木,但我希望在另一个解决方案中。请帮帮我!
答案 0 :(得分:2)
您可以尝试使用捕获。即,在widget.tpl中:
{capture name="js"}
<script src="widget.js"></script>
{/capture}
{$tpl_scripts[]=$smarty.capture.js scope="global"}
这将允许任何include将代码放入$ tpl_scripts数组中,以便可以将它放在主模板中的任何位置;所以,在template.tpl
中{block name="js"}{/block}
{foreach $tpl_scripts as $tpl_script}
{$tpl_script}
{/foreach}