Smarty相对包含路径

时间:2010-09-23 17:03:56

标签: php css smarty

文件结构如下:

index.php

settings/
|-manage_account.php

templates/viriditio-v2/
|-index.tpl

templates/virditio-v2/css
|-style.css

localhost/~braden/virditio/index.php显示模板,如预期显示index.tpl,样式表路径正确显示:

<link rel="stylesheet" href="templates/virditio-v2/css/style.css" type="text/css"/>

但是localhost/~braden/virditio/settings/manage_account.php显示相同的路径,即相对路径(应该是../才能完成)。

使模板相对于模板的简单方法是什么?或绝对的根?是否有包含css文件的Smarty函数并使它们不相对?

目前我的设置如下:

配置: template_url = "templates/virditio-v2/"

和.tpl: <link rel="stylesheet" href="{#template_url#}css/reset.css" type="text/css"/>

修改

它不漂亮,但我能够用

完成它
{assign var='config_url' value=#template_url#}
{assign var='template_url' value=http://`$smarty.server.SERVER_NAME`$config_url}

那里有更好的解决方案吗?

2 个答案:

答案 0 :(得分:0)

如果我理解正确,问题是将CSS文件链接到网页,无论页面来自文件夹树中的哪个位置。这可能写成:

<link rel="stylesheet" href="/~braden/virditio/templates/virditio-v2/css/style.css" type="text/css"/>

这将使其成为从服务器根目录开始的固定路径。

答案 1 :(得分:0)

为什么不像

那样访问CSS
/templates/virditio-v2/css/style.css

有绝对路径吗?

如果它关于子目录中的不同托管环境,请考虑使用config选项来设置基本目录,并将其作为可修复的附加到智能模板中的路径。