LifeType 中文開發論壇

開發 => 模版設計 => 主題作者是: oldwain 於 五月 21, 2006, 09:47:57 下午



主題: 请教一下模版中使用资源文件的方法
作者: oldwain五月 21, 2006, 09:47:57 下午
我想在模版中引用用户在资源文件中上传的文件,不知道是否有办法:
1. 根据文件名判断是否存在某个文件? (包含路径,如果麻烦的话,只能判断跟文件夹中也可)
2. 根据文件名获得资源对象($res)或者资源url?




主題: Re: 请教一下模版中使用资源文件的方法
作者: james五月 21, 2006, 10:22:51 下午
我想在模版中引用用户在资源文件中上传的文件,不知道是否有办法:
1. 根据文件名判断是否存在某个文件? (包含路径,如果麻烦的话,只能判断跟文件夹中也可)
2. 根据文件名获得资源对象($res)或者资源url?

不太清楚你的問題。
不過如果你可以取得文件名稱,應該是使用類似 $resource->getFileName()這樣的方式來取得。
如果是這樣的方式,應該可以透過 $url->resourceDownloadLink($resource) 來取得文件的url.
除非你取得文件名稱的方式是直接寫在模版裡面,這樣我就不清楚了。

另外就我的了解,$resource 物件好像只能在album, albums, resource等三個template中使用,其它的模版檔案似乎無法使用。
如有錯誤歡迎指正。

James.


主題: Re: 请教一下模版中使用资源文件的方法
作者: ajer001五月 21, 2006, 10:41:36 下午
你的意思是要檢查是否重複檔案並且顯示位置
以及
搜尋檔案

這樣嗎?


主題: Re: 请教一下模版中使用资源文件的方法
作者: oldwain五月 22, 2006, 12:05:52 上午
可能是前面描述的不够清楚.
问题起源于这篇帖子:
http://forum.lifetype.org.tw/index.php?topic=2033.0
其中谈到了使用config file, 现在通过使用config file我已经可以让模版支持多种语言了

但是,现在我希望用户在使用这个模版时,可以不修改模版文件,而只要在他的资源中上传一个config file (比如取名settings.conf), 模版会主动读取用户的config file, 并用其中的选项覆盖模版的一些缺省选项。

举例说明:
在我的模版文件中的settings.conf中有如下的行:
...
usefeedburner = 0
feedburneraddress =
...
意思是缺省情况下,显示lifetype提供的feed地址,而不是feedburner feed地址。

如果用户上传的settings.conf文件中,包含如下内容:
usefeedburner = 1
feedburneraddress = http://feeds.feedburner.com/Oldwain

那么在显示的时候,模版会根据用户配置文件,显示feedburner feed地址.

通过这种方式,可以做到让用户完全不修改模版的情况下,去定制模版的显示风格。


不知能否实现这样的想法。




主題: Re: 请教一下模版中使用资源文件的方法
作者: oldwain五月 22, 2006, 12:13:04 上午
刚才用这样的方法试验了一下:
程式碼:
{assign var="customconfigpath" value=$url->getResourceServerUrl()|cat:"?blogId="|cat:$blog->getId()|cat:"&resource=settings.conf"}
{config_load file="$customconfigpath"}

但是会出错:
[client 127.0.0.1] PHP Warning:  Smarty error: unable to read resource: "http://localhost/plog/resserver.php?blogId=7&resource=settings.conf" in D:\\Apache2\\htdocs\\plog\\class\\template\\smarty\\Smarty.class.php on line 1108, referer: http://localhost/plog/admin.php?op=resourceInfo&resourceId=6

通过浏览器输入地址http://localhost/plog/resserver.php?blogId=7&resource=settings.conf,是可以正确读取的。
似乎config_load 只能读取本地文件路径, 并不认url

不知还有什么办法?



主題: Re: 请教一下模版中使用资源文件的方法
作者: lss五月 22, 2006, 08:53:44 上午
hi oldwain:

這可能是 smarty 程式裡的 $secure_dir (http://smarty.php.net/manual/en/variable.secure.dir.php) 的限制造成無法讀取限制目錄之外的檔案。

LifeType 把 $secure_dir 設定為 templates , templates/admin , templates/blog_{Id}/$layout 三個目錄(參考 class/tempalte/template.class.php 及 class/template/templateservice.class.php)。所以 smarty 的 config file 放在資料夾裡可能會無法讀取。

不知道耶,雖然這個點子好像不錯,但是,總覺得把 config file 放在資料夾裡面怪怪的 ^o)

lss


主題: Re: 请教一下模版中使用资源文件的方法
作者: oldwain五月 22, 2006, 12:58:30 下午
谢谢lss

既然这样
我只好再试试看有没有别的思路.




主題: Re: 请教一下模版中使用资源文件的方法
作者: lss五月 22, 2006, 01:09:55 下午
hi oldwain:

我以前有想過,把 config file 裡的設定值改成做在 plugin ,直接在後台設定,用來搭配 bcse 的 wordplog 模版,這樣會更方便 blogger 自訂佈景主題。你願意試試看嗎?  :-D

lss


主題: Re: 请教一下模版中使用资源文件的方法
作者: oldwain五月 22, 2006, 08:00:08 下午
如果使用plugins的话, 应该不难实现.
不过我不想这样, 因为我上面的想法就是希望用户使用我的模板时,即可自定义个性化的东西, 又能减少复杂性.
如果让用户安装plugins的话, 对于多数用户来讲, 可能还不如修改模板文件方便 (我现在的模板多数修改工作只要修改settings.conf一个文件即可)


主題: Re: 请教一下模版中使用资源文件的方法
作者: markwu五月 23, 2006, 10:36:36 下午
那麼剩下唯一的方法就是:

1. 用 template editor plugin 把 template copy 一份到 blog 中
2. 然後透過 template eitor 來修改 settings.conf

這樣可以達到 deefault 的 setting 只有 site admin 可以修改。而 blog owner 可以在每一個 blog 中都有自己的設定。

Mark


主題: Re: 请教一下模版中使用资源文件的方法
作者: oldwain五月 24, 2006, 12:32:14 上午
谢谢mark, lss!

我再仔细研究研究.