iTemplate v1.0.0 ready for release.

本帖最後由 ioptional 於 2010-1-16 12:05 編輯

專案:
iTemplate

開發語言:
PHP

目前版本:
1.0.0

目前進度:
定制 Plug-in, 分別為三個階段: Initialization, Callback, Finalize
Intialization 就是 prepare 之後將所有內容先處理
Callback 就是於 parse 時處理每一個 Step 的時候處理, 必須靠特定的 tag 呼叫出 Plugin, 例如
  1. <!-- EXEC counting:loopary cssclass_a,cssclass_b,cssclass_c -->
  2. OR
  3. {EXEC counting:loopary cssclass_a,cssclass_b,cssclass_c}

  4. Callback:
  5. // $plugin_name => counting
  6. // $function => loopary
  7. // $params => array('cssclass_a', 'cssclass_b', 'cssclass_c')

  8. $value = self::plugin[$plugin_name]->$function($params);
  9. class counting extend iTemplatePlugin {
  10.      var $index = 0;
  11.      public function loopary($params) {
  12.           return $params[($this->index % 3)];
  13.           $this->index++;  
  14.      }
  15. }
複製代碼
Finalize 就是 printOut 時進行處理

簡介:
此程式為模版系統, 用於讓開發者可以將 HTML+CSS 設計跟程式開發完全分開, 方便管理與修改。此模版系統提供簡單的溝通, 但能做到以往其他模版系統無法簡單做到的事 - 多重同步版塊。當要建立樹狀效果的時候, 必須如下例子般排列:
  1. <blockquote>
  2.      Level 1
  3.      <blockquote>
  4.           Level 2
  5.           <blockquote>
  6.                Level 2
  7.                <div>Bottom_Setting: Option 1 | Option 2</div>
  8.           </blockquote>
  9.      </blockquote>
  10. </blockquote>
複製代碼
舊方法必須如下設定:
sample.tpl
  1. <-- START tree_start -->
  2. <blockquote>
  3.      Level {LEVEL}
  4. <-- END tree_start -->
  5.           <div>Bottom_Setting: Option 1 | Option 2</div>
  6. <-- START tree_end -->
  7. </blockquote>
  8. <-- END tree_end -->
複製代碼
sample.php
  1. ...
  2. for ($i = 0; $i < 3; $i++) {
  3.      $tpl->newBlock('tree_start');
  4.      $tpl->assign('LEVEL', $i);
  5.      $tpl->gotoBlock('_ROOT');
  6.      $tpl->newBlock('tree_end');
  7.      $tpl->gotoBlock('_ROOT');
  8. }
  9. ...
複製代碼
新技術只需如下設定就可以擁有同樣的效果:
sample.tpl
  1. <-- START tree -->
  2. <blockquote>
  3.      Level {LEVEL}
  4. <-- END tree -->
  5.           <div>Bottom_Setting: Option 1 | Option 2</div>
  6. <-- START tree -->
  7. </blockquote>
  8. <-- END tree -->
複製代碼
sample.php
  1. ...
  2. for ($i = 0; $i < 3; $i++) {
  3.      $tpl->newBlock('tree');
  4.      $tpl->assign('LEVEL', $i);
  5. }
  6. ...
複製代碼
除此之外 iTemplate 更擁有暫存功能, 每當 iTemplate 分析檔案的時候也會花上一點時間, 只要設定好了 Cache Path 就可以將已分析好的資料暫存到指定的地方, 下一次直接讀取相關的暫存檔就可以避免再一次進行分析, 籍此提升效率。更特別的是 iTemplate 會將所有處理好的模版先暫存, 直到所有檔案全部處理後才進行輸出。如果每一個檔案就直接輸出的話, 就很難再次修改。iTemplate 更提供 Global Assign 來配合, 修改檔頭進行 SEO 也是最簡單不過!

最後 iTemplate 更支援直接輸出檔案, $tpl->printOut('file.html'); 一句就可以將所有已處理好的模版直接寫到檔案之中, 方便大型系統的製作!

語法基於 TemplatePower

TOP

回復 2# Puff
類似, 本身係 phpBB 2.0 之後就以 TemplatePower 做藍圖, 方便返D人用

TOP

回復  Puff
類似, 本身係 phpBB 2.0 之後就以 TemplatePower 做藍圖, 方便返D人用
ioptional 發表於 2010-1-17 11:19

依家 phpBB 3.0 都有 IF ELSEIF END,有無諗過加落去?
定係呢 D Logical 既野比返程式做?

TOP

回復 4# Puff


    比返程式做啦, 當然你可以寫 Plugin 入去搞

TOP