Mahara日本語ドキュメント/カスタマイズ/テーマ/SmartyとDwooの違い

From Mahara Wiki
Jump to navigation Jump to search

Mahara 1.2ではテンプレートエンジンとして、Smartyの代わりにDwooを使用しています。両エンジンには多くの互換性がありますが、既存のテンプレートにおいて、変更すべきいくつかの点があります。

Mahara 1.2以降、私たちは「Smarty互換」構文を使用するのではなく、さらにDwooネイティブ構文へと移行しますが、少なくとも1.3では下位互換性を保持する予定です。

Cycle

Smartyでは {cycle} の変数は引用符 (') で囲む必要がありません。しかし、Dwooでは引用符で囲む必要があります。例えば、 {cycle values=r0,r1} はSmartyで動作しますが、Dwooでは {cycle values='r0,r1} のように引用符で囲む必要があります。

Insert

SmartyにおけるInsertは関数呼び出し (function call) の戻り値をSmartyに出力して、キャッシングをスキップするため使用されます。例えば {insert name="messages"} はPHP関数insert_messagesを呼び出して、結果として表示されるテンプレートに戻り値を出力します。

Dwooでは、これはネイティブPHPコール {insert_messages} を使用して実現されます。そして、キャッシングをバイパスする場合、{dynamic}{insert_messages}{/dynamic} のように {dynamic} タグで囲みます。

テンプレートのインクルード時に "data" を使用する

SmartyおよびDwooは {include} を使用して他のテンプレートをインクルードすることができます。また、両者とも {include something='something'} を使用してテンプレート間でデータを受け渡すことができます。しかし、あなたが "data" と呼ばれる変数を使用した場合、ネーミングの衝突により既存のデータから上書きされてしまいます。そのため、代わりに {include file='something.tpl' innerdata=$foo} を使用すべきです。

Section

私たちはMahara 1.1のいくつかの部分でループの代わりに {section} を使用しています。これは完全にDwooと互換性がないため、代わりにループに入替える方が道理にかなっています。