什麼是完美的樣版引擎首要條件呢? 對美工人員來說,只要支援 WYSIWYG 就是了。
剛剛在 SitePoint 討論 Savant 的回應當中看到 tinybutstrong 這個樣版引擎。
連過去看了一下實在令人驚艷!
tinybutstrong (以下簡稱為「小強」) 最吸引人的地方既不在小,也不在強,而在於它是可以在 WYSIWYG 環境下編輯的樣版引擎。
來看個範例就知道我在說什麼了:
由左到右分別是 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’);
小強果然不愧為小強,指令少、體積小、功能強、入門容易,有興趣的人不妨給小強一個服務的機會。^_^
小強官方網站:
http://www.tinybutstrong.com/
國外採用小強的網站列表:
http://www.tinybutstrong.com/sitelist.php
國內已採用小強的網站:
中興大學公文佈告系統 (http://hcl.nchu.edu.tw/pub_doc/)
21 comments On [PHP] tinybutstrong 樣版引擎介紹
哇!這個東東實在很棒,就收起來用囉!!
另外,Neo大大把 Tinybutstrong 翻成 「小強」,真是妙極了。
哈哈,tinybutstrong 實在太長了,不取個簡單的名字實在懶的打那麼多的字。
正好這組字翻成「小強」還算蠻直覺的。^_^
TinyButStrong WYSIWYG 的模板引擎
从 Neo’s Blog 上看到的:
最大的特点就是支持 WYSIWYG 了,觉得挺不错的,在 Cake 的 group 上也看过关于它的讨论。
详看其介绍:tinybutstrong 樣版引擎介紹
TinyButStrong 主页
另外觉得
『對美工人員來說,只要支援 WYSIWYG 就是了』這句話太貼切了!所以 Smarty 真的是不好的 template engine … 把pLog 改用『小強』好了。
不過 Oscar 可能不會答應,得自己 fork ..
Mark
Mark 加油! 乾脆把 pLog 再做一套 Mark 版吧。^^
說實話,我對他用[]做識別符號有點存疑,雖然不會影響CSS,可是對設計表單可能會有些影響,因為我個人喜歡把輸入控制項的名字裡面加入[]…
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 補充)
註:以上是我看小強的說明寫出來的,還沒時間去實際使用,有錯的話請大家指正一下。
不隻到這裡貼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:
感謝補充! 因為要節省版面,我剛剛幫你把程式內容簡化了一下。
巢狀區塊應該是沒問題的,可以參考:
http://www.tinybutstrong.com/apps/forum/index.php?frm=&thr_id=737&msg_id=3193
感謝你^^
其實我原本要測試的東西比較接近這一篇
http://www.tinybutstrong.com/apps/forum/index.php?frm=&thr_id=737&msg_id=3193
不過還是要小小抱怨一下,把區塊的標籤也用[]來表現,
常常會把[]那個地方給撐開,我個人還是覺得用<!– –>
這種方式會比較好。
話說回來了,像Smarty或是Sigma有支援變數修飾子功能的樣板系統,一不小心用了太多修飾子的話,下場也是一樣…
看個人喜好囉~^^
這次用筆電回一下…
目前正在收集PEAR的替代品,原因無他,PEAR用在給客戶的案子上,配置實在是大問題。
資料庫改用adodb_lite,樣板就用小強^^(若不考慮移植性的話,小強就夠了),連分頁模組都省下來…
最近使用小強已經漸漸習慣了^^
不過呢,除錯上有些麻煩,因為小強在錯誤發生時,只會傳回false,相較於ADODB Lite會傳回一個錯誤的物件(內含某個屬性可以看SQL命令),實在是遜色很多…
不方便偵錯倒是蠻糟的,可以把小強 Override 過後再使用,當小強出現錯誤也比較容易偵錯。不過還得多花點時間就是了..^^
各位學長好,我利用小強+session做登入登出的動作,不過session好像都不能跑,請問出了什麼錯?
由於這裡不能由html,所以我把source code留在這裡
http://0rz.net/400y8 →source code
謝謝大大~
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 不能跑是指這個嗎?
tokimeki:
我這幾天才開始在玩小強,剛剛看你之前的回應,才知道你所謂「撐開」的意思。
http://www.tinybutstrong.com/examples.php
不知道 Special Syntax (comm) 功能是不是你要的?
小强的优点和缺点一样明显,虽然速度快了一些,但这是相对的,毕竟它的cache功能没有Smarty那样强大,如果单纯追求快,那SmartTemplate也一样值得一提,个人觉得小强的最大意义就是简洁,用于结构简单的小程序还是很好的。
至于wyswyg被列为一个优点,呵呵,在下不敢苟同。除非这名负责外观设计的人只会用DW进行可视化设计,而对于使用XHTML+CSS的设计师来说,是否wyswyg根本就不重要,拿这个当卖点只是取悦于菜鸟罢了。
你怎麼知道中興大學公文佈告系統是用 tinybutstrong呢
還有另外一個站也是唷
TANET2005 http://tanet2005.nchu.edu.tw
總之小強就是一個讚字可形容