Neo's Blog

首頁 相本 討論 書籤

分類目錄
本站日誌 (52)
碎碎唸啦 (171)
網站架設 (83)
程式設計 (158)
軟體使用 (69)
電子商務 (123)
經營奇想 (48)
基金理財 (11)
聰明消費 (85)
電影心得 (47)
開放原碼 (16)
工作記錄 (2)
毛毛小記 (9)
就是不同 (2)



歷史資料
 




July 30, 2005
[PHP] tinybutstrong 樣版引擎介紹

什麼是完美的樣版引擎首要條件呢? 對美工人員來說,只要支援 WYSIWYG 就是了。

剛剛在 SitePoint 討論 Savant 的回應當中看到 tinybutstrong 這個樣版引擎。

連過去看了一下實在令人驚艷!

tinybutstrong (以下簡稱為「小強」) 最吸引人的地方既不在小,也不在強,而在於它是可以在 WYSIWYG 環境下編輯的樣版引擎。

來看個範例就知道我在說什麼了:

20050730_06.gif

由左到右分別是 Smarty、小強、WYSIWYG 編輯器(如 FrontPage、Dreamweaver...)

利用小強做出來的畫面,完全沒有破壞 HTML 的巢狀規則,可以在任何 WYSIWYG 編輯器上直接編輯。

不但如此,小強還很貼心的使用 [] 做為識別符號,以減少和 HTML 裡面的 JavaScript、CSS 衝突的機會。

在程式方面值得一提的就是它和 Smarty 這種編譯式的樣板不同,而是直接由 PHP 產生畫面。

Smarty 樣版流程:
指定變數->載入樣版(Template)檔案->產生編繹檔案->顯示畫面

小強樣版流程:
載入樣版(Template)檔案->指定變數->顯示畫面

Sample Code 範例展示:
http://www.tinybutstrong.com/manual.php#examples

小強省去了編譯時所需的CPU及磁碟存取的時間,所以在執行速度上相對較快,而且小強還提供了 cache 功能來提升使用效能。

另外一個特點就是小強可以直接讀取資料庫來顯示畫面:


$TBS->MergeBlock('block1',$conn,'SELECT * FROM clients ORDER BY cli_id');

(有支援 ADODB,範例在此)

小強果然不愧為小強,指令少、體積小、功能強、入門容易,有興趣的人不妨給小強一個服務的機會。^_^

小強官方網站:
http://www.tinybutstrong.com/

國外採用小強的網站列表:
http://www.tinybutstrong.com/sitelist.php

國內已採用小強的網站:
中興大學公文佈告系統 (http://hcl.nchu.edu.tw/pub_doc/)

 
由 Neo 發表於 July 30, 2005 11:54 PM 收進你的MyShare個人書籤  

哇!這個東東實在很棒,就收起來用囉!!
另外,Neo大大把 Tinybutstrong 翻成 「小強」,真是妙極了。


Rafael 發表於 July 31, 2005 04:14 PM

哈哈,tinybutstrong 實在太長了,不取個簡單的名字實在懶的打那麼多的字。

正好這組字翻成「小強」還算蠻直覺的。^_^


Neo 發表於 July 31, 2005 08:13 PM

『對美工人員來說,只要支援 WYSIWYG 就是了』這句話太貼切了!所以 Smarty 真的是不好的 template engine ... 把pLog 改用『小強』好了。

不過 Oscar 可能不會答應,得自己 fork ..

Mark


Mark 發表於 August 1, 2005 02:08 PM

Mark 加油! 乾脆把 pLog 再做一套 Mark 版吧。^^


Neo 發表於 August 1, 2005 08:26 PM

說實話,我對他用[]做識別符號有點存疑,雖然不會影響CSS,可是對設計表單可能會有些影響,因為我個人喜歡把輸入控制項的名字裡面加入[]...


tokimeki 發表於 August 4, 2005 06:49 AM

tokimeki:

是指 <input name="foo[]"> 嗎?

小強跟 Smarty 不同的地方在於,Smarty 預設「只用」分隔符號 {} 去判別要處理的區塊。

而小強是用「分隔符號+指令(或變數)」來判別處理區塊,以 Javascript 為例:
<?
$i=1;
?>
var i=0;
foo[0] = "js";
foo[1] = "小強";
alert(foo[i]);

以上的Javascript 含了一堆的 [] ,但是並不會產生任何畫面上的錯誤,因為這樣小強不會去處理 [] 裡面的資料。

如果要小強把 PHP 的 $i 放到樣板上,必須要這樣做:

alert(foo[[var.i]]);

要二層 [] 的時候小強才會處理裡面的內容。
(感謝 tokimeki 補充)

註:以上是我看小強的說明寫出來的,還沒時間去實際使用,有錯的話請大家指正一下。


Neo 發表於 August 4, 2005 11:34 AM

不隻到這裡貼HTML碼會不會有問題...
剛剛我有做一下測試,只要再加一層[]就沒問題

HTML碼 (index.htm)
<input name="測試[[元素]]" type="text" id="測試[[元素]]" value="[測試]" />

PHP碼 (index.php)
<?
$TBS = new clsTinyButStrong ;
$TBS->LoadTemplate('index.htm') ;
$TBS->MergeField('測試', 'KK');
$TBS->MergeField('元素', 'KK');
$TBS->Show();
?>


tokimeki 發表於 August 4, 2005 06:11 PM

不過不知道巢狀區塊行不行,待會再測試看看^^


tokimeki 發表於 August 4, 2005 06:13 PM

tokimeki:
感謝補充! 因為要節省版面,我剛剛幫你把程式內容簡化了一下。

巢狀區塊應該是沒問題的,可以參考:
http://www.tinybutstrong.com/apps/forum/index.php?frm=&thr_id=737&msg_id=3193


Neo 發表於 August 4, 2005 06:51 PM

感謝你^^
其實我原本要測試的東西比較接近這一篇
http://www.tinybutstrong.com/apps/forum/index.php?frm=&thr_id=737&msg_id=3193


tokimeki 發表於 August 4, 2005 10:10 PM

不過還是要小小抱怨一下,把區塊的標籤也用[]來表現,
常常會把[]那個地方給撐開,我個人還是覺得用<!-- -->
這種方式會比較好。
話說回來了,像Smarty或是Sigma有支援變數修飾子功能的樣板系統,一不小心用了太多修飾子的話,下場也是一樣...


tokimeki 發表於 August 4, 2005 11:09 PM

看個人喜好囉~^^


Neo 發表於 August 5, 2005 12:18 AM

這次用筆電回一下...
目前正在收集PEAR的替代品,原因無他,PEAR用在給客戶的案子上,配置實在是大問題。
資料庫改用adodb_lite,樣板就用小強^^(若不考慮移植性的話,小強就夠了),連分頁模組都省下來...


tokimeki 發表於 August 5, 2005 06:13 PM

最近使用小強已經漸漸習慣了^^
不過呢,除錯上有些麻煩,因為小強在錯誤發生時,只會傳回false,相較於ADODB Lite會傳回一個錯誤的物件(內含某個屬性可以看SQL命令),實在是遜色很多...


tokimeki 發表於 August 8, 2005 10:20 AM

不方便偵錯倒是蠻糟的,可以把小強 Override 過後再使用,當小強出現錯誤也比較容易偵錯。不過還得多花點時間就是了..^^


Neo 發表於 August 8, 2005 08:12 PM

各位學長好,我利用小強+session做登入登出的動作,不過session好像都不能跑,請問出了什麼錯?

由於這裡不能由html,所以我把source code留在這裡

http://0rz.net/400y8 →source code

謝謝大大~


peiga 發表於 August 9, 2005 05:48 PM

peiga:

我執行正常耶。除了 session_register("id"); 會產生以下的訊息:

Warning: Unknown(): Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0

不知道你說的 Session 不能跑是指這個嗎?


Neo 發表於 August 27, 2005 03:55 PM

tokimeki:

我這幾天才開始在玩小強,剛剛看你之前的回應,才知道你所謂「撐開」的意思。

http://www.tinybutstrong.com/examples.php

不知道 Special Syntax (comm) 功能是不是你要的?


Neo 發表於 September 4, 2005 12:56 AM

小强的优点和缺点一样明显,虽然速度快了一些,但这是相对的,毕竟它的cache功能没有Smarty那样强大,如果单纯追求快,那SmartTemplate也一样值得一提,个人觉得小强的最大意义就是简洁,用于结构简单的小程序还是很好的。

至于wyswyg被列为一个优点,呵呵,在下不敢苟同。除非这名负责外观设计的人只会用DW进行可视化设计,而对于使用XHTML+CSS的设计师来说,是否wyswyg根本就不重要,拿这个当卖点只是取悦于菜鸟罢了。


guest 發表於 January 26, 2006 01:34 PM

你怎麼知道中興大學公文佈告系統是用 tinybutstrong呢
還有另外一個站也是唷
TANET2005 http://tanet2005.nchu.edu.tw
總之小強就是一個讚字可形容


豆子 發表於 February 22, 2006 07:09 PM
發表迴響  
(*星號開頭為必填欄位)











(請輸入您看到的數字,看不到請按右鍵->顯示圖片)


記住我的資訊?







Copyright 2005 Neo's Blog All rights reserved.