Smarty:阻止包含或如何组织网站上的小部件

时间:2014-03-12 12:54:23

标签: php html web smarty

我的网站上有许多基于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>

我知道我不能在里面制作积木,但我希望在另一个解决方案中。请帮帮我!

1 个答案:

答案 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}