我有一个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
功能也不存在。
答案 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" />