一個好的開發框架應該要能夠讓開發團隊很容易的修改外觀設計,要能夠讓對框架不熟習的美工很容易上手。能讓美工用他們熟習的設計工具,例如
DreamWeaver,然後將設計作品提交至系統某個目錄,無需依賴程序員修改美工的作品。
Seagull對theme的設計太複雜了!
光是存放與外觀有關文件的目錄就有:
1. www/themes/default
2. www/themes/mytheme
3. module/default/templates
4. module/mymodule/templates
5. module/mymodule/www
加上master模板定義模板之間的套用關係,再加上config.ini指定模板,要說明清楚如何替Seagull設計theme還真不簡單,而且容
易混淆。
我認為應該簡單一點:
1. 將外觀設計的作品集中存放在一個目錄:www/themes/,裏面有許多theme, theme裏面的東西由外觀設計師決定而不是由程
序員決定。theme之間設計重覆的部份可能很多,但就算會犧牲掉reuse,能換得容易維護也是值得的。
2. 模塊使用那一個theme是程序員的事,設定值放在config.ini。
3. 使用者使用那一個theme是使用者的事,設定值放在user preferences
theme2
---css
---js
---images
---default
---module1
---module2
theme3
---css
---js
---images
---default
---module1
---module2
而对于普通用户而言,seagull允许他们可以通过用户偏好设定界面来选择自己要使用哪个主题(除了guest要使用默认设置的主题)。到目前为止整
个主题相关的设计思路是很清晰的。
至于上面提到的模板存放文件的位置太乱的问题,事实上是这样的:
只有在使用flexy作为模板引擎才可能碰到的问题,而且事实上它不是问题,为什么说不能算是个问题a,Seagull是为了减少重复而利用了
flexy的inheritance特点,你可以不使用,seagull没有强迫使用。b,你还可以定义自己的HtmlRender strategy
类,比如flexy2,修改flexy模板引擎的初始配置,然后修改全局配置文件;c,或者你可以选择使用别的模板引擎。
按Seagull目前的设置,seagull查找模板的先后顺序是:
1. www/themes/mytheme/curr-mod/ 当前主题下的当前模块目录下如www/themes/theme1/
module1/
2. www/themes/mytheme/default/ 当前主题下的default目录下如www/themes/
theme1/default/
3. module/curr-mod/templates 当前模块的模板目录如module1/templates/
4. module/global set default module/templates 如果当前模块是module2 则为
module2/template2,右为default,则同5
5. module/default/templates default模块的templates目录 即 default/
templates/
什么时候把模板放在模块的模板目录下呢(上面的第三个搜索)?个人总结认为:当一个模板不需要各个主题提供时,有点像废话,但是确实有,比如这个模板不
是用来显示页面的,而是用来生成的,或者说是一个邮件模板,它不至于需要一个主题提供一份吧。那放在哪里最合适,它又不用于显示,当然是放在模块的模板
目录合适了,要不然哪天移动的时候,发现模块少了某个模板。另外,应该还有这种情况,即一个站点,允许用户自由选择主题,但是其中的一个模块不想或者是
不能换主题,
当然,inheritance也有不好的地方,那就是可能在删除某个主题时造成另外的主题不能正常使用。不过这也正说明了它存在的另一个好处,我们要在
模块的模板目录中放一套完整的模板,让其在找不到时可以像translation的fallback语言一样工作。
希望有所帮助!
On Dec 3, 1:09 pm, Henry Juan <henryr...@gmail.com> wrote:
> 外觀設計在項目中佔非常重要的地位。項目驗收時,客戶對功能代碼通常沒有興趣了解或是沒有能力批評,但是一看到外觀就馬上有意見:不好看、很難用、不夠
> 直觀....總之,就是要修改。