我有一个Smarty2模板,我希望使用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功能也不是。
发布于 2013-06-03 23:31:42
您可以尝试以下操作:
使用{php}标签:
<style>
{php}include('/filesystem/path/to/thumbnails.css');{/php}
</style>如果您知道文件的路径,并且不介意与Smarty3不兼容,请使用此大小写
使用自定义函数:
创建自定义smarty函数,并将其放入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编辑css文件:将{}标记添加到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之类的工具访问它),然后像现在这样硬链接到它
发布于 2013-06-04 00:04:56
$smarty.server.PHP_SELF返回执行你的模板的当前文件的名称和路径,即htt.../mypage.php,如果你在remplate渲染后查看源代码,你会发现为什么css没有加载。
取而代之的是,在你的php文件中声明一个具有所需路径的变量,并将其传递给smarty (在本例中为$css_path):
<link href="{$css_path}thumbnails.css" rel="stylesheet" type="text/css" />https://stackoverflow.com/questions/16895656
复制相似问题