[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/)

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
    總之小強就是一個讚字可形容

Leave a reply:

Your email address will not be published.

Site Footer

Sliding Sidebar