在Smarty 2模板中包含或导入(@import)样式表

时间:2013-06-03 11:26:59

标签: html css smarty stylesheet smarty2

我有一个Smarty 2模板,我希望使用CSS import甚至只是常规<link>标记来包含CSS文件,而不是使用带有内联CSS的传统{literal}标记

Smarty 2有可能吗?

CSS文件与Smarty模板位于同一目录中,所以我想从同一目录中获取它 - 但这不起作用。

<link href="{$smarty.server.PHP_SELF}thumbnails.css" rel="stylesheet" type="text/css" />

CSS @import功能也不存在。

2 个答案:

答案 0 :(得分:3)

您可以尝试以下操作:

使用{php}标记:

<style>
{php}include('/filesystem/path/to/thumbnails.css');{/php}
</style>

如果您知道文件的路径,请使用此案例,并且不介意与smarty3不兼容

使用自定义功能:

创建自定义智能功能并将其放在plugins_dir内的名为function.include_file.php的文件中:

<?php
function smarty_function_include_file($params, &$smarty)
{
    include($params['file']);
}

然后用:

调用它
<style>
{include_file file='/filesystem/path/to/thumbnails.css'}
</style>

如果您知道文件的路径,请使用此案例,并且不介意为此目的创建新功能

编辑您的css文件: 将{literal}标记附加到css文件的开头和结尾,例如:

/*{literal}*/
body{background-color:red!important}
/*{/literal}*/

然后将其包括在内:

<style>
{include file = "thubnails.css"}
</style>

如果您不介意编辑css文件,请使用此案例

请记住,上面的所有情况显然都会将所有文件都包含为内联样式表,这不是一个好习惯。一个更好的程序是将你的css文件放在可以通过web访问的地方(也就是说,你可以用http://yoursite.example.com/path/to/css/thumbnails.css之类的东西访问它)然后像你现在那样硬链接到它

答案 1 :(得分:1)

$ smarty.server.PHP_SELF返回执行模板的当前文件的名称和路径,即htt ... / mypage.php,如果在渲染remplate后查看源代码,您将看到为什么css没有加载。

相反,在php文件中使用所需路径声明一个变量并将其传递给smarty(在示例中为$ css_path):

<link href="{$css_path}thumbnails.css" rel="stylesheet" type="text/css" />