Smarty,包括css / javascript文件

时间:2014-02-04 21:27:50

标签: php templates include smarty assign

在页面上包含不同的CSS或JavaScript文件是否真实,具体取决于其名称。 例如,如果我有页面订单,将包含orders.css,如果我有索引页面将包括index.css,或者可能包含其他检查,如果x = 3包括main.js, x = 5包括validate.js

我知道我可以通过PHP执行此操作,例如:

if (x = 3) $smarty->assign('file_css', 'orders');
else $smarty->assign('file_css', 'index');

并在模板中写下如下内容:

<link rel='stylesheet' href='css/{$file_css}.css' />

但也许有一种方法可以通过聪明的方式来做到这一点?

前段时间,我在项目中看到类似智能模板中的块,其中是css / js文件,它们包含了一些魔法页面,mby by PHP我不知道,但它看起来非常清晰,舒适。有1个文件,其中包括:

{smarty block='css'}
    <link ....... />
    <script ..... />
{/smarty block}

然后这个块被包含在模板上的必要位置。

这只是一个例子,我不记得它是如何调用的,但它就是这样的。

2 个答案:

答案 0 :(得分:2)

您可以使用{smarty.template},其中包含.tpl扩展名的当前模板名称,例如“orders.tpl”。 将扩展名替换为您的选项

<link rel='stylesheet' href='css/{$smarty.template|replace :'.tpl':'.css'}' />

答案 1 :(得分:1)

有几种方法可以做你想做的事。但是,您可能正在考虑模板继承。

您可以执行类似此示例的操作,并在main.tpl中使用不同的样式表附加CSS。

  

在index.tpl

<html> 
<head> 
{block name='head'}{/block} 
</head> 
<body> 
{block name='body_main'}{block} 
</body> 
</html>
  

main.tpl

{block name='head' append} 
<--  your css  --> 
{/block} 
{block name='body_main'} 
your content here 
{/block} 

在这里查看更多信息。 http://www.smarty.net/inheritance