Weblinks のテンプレートの仕組み
投稿者: Ken 掲載日: 2008-1-13 (2385 回閲覧)
ここを読む前に、XOOPS のテンプレートの仕組み を一読ください。
Weblinks 方式
Weblinks では、テンプレートの入れ子を行う場合、
XOOPS 標準とは異なる方法を採用しています。
(1) モジュール定義ファイル
xoops_version.php
(2) プログラム・ファイル
index.php
(3) テンプレート・ファイル
templates/hoge_index.html
templates/parts/hoge_part.html
(4) モジュール・アップデート・プログラム
onupdate.php
下記のように動作します。
index.php を実行すると、
hoge_part.html の変数 $hoge_hoge に値が代入される。
hoge_part.html が実行され、変数 var に実行結果「ほげほげ」が代入される。
hoge_index.html の変数 $hoge_part に $var が代入される。
hoge_index.html が実行され、
hoge_part.html の実行結果である「ほげほげ」が表示される
子供のテンプレートのコンパイル
モジュール定義ファイルに指定していないので、
モジュール・インストール時、またはアップデート時には、コンパイルされません。
Smarty の機能として、実行時に、テンプレートがなければ、自動的にコンパイルされます。
Smarty の機能として、テンプレート・ファイルが更新されれば、自動的に再コンパイルされますが。
うまく動作しないこともあります。
Weblinks では、モジュール・アップデート時に、コンパイル結果を廃棄する機能を追加しています。
これにより、更新されたテンプレートは、初回の実行時に再コンパイルされます。
利点
XOOPS 標準方式に比べ、テンプレートの種類と数が大幅に減少します。
weblinks では、親のテンプレートの数が 15 個、子供のテンプレートの数が 14 個と、大変多くなっています。
さらに、4つのモジュール複製に対応しているため、その数が4倍になります。
これを、XOOPS 標準方式で実現すると、テンプレートは 74 種類 116個になります。
Weblinks 方式では、テンプレートは 29 種類 74個になります。
欠点
(1) 子供のテンプレートには、XOOPS 標準のテンプレート管理が使用できない。
子供のテンプレートをカスタマイズするには、直接 ファイルを編集してください。
モジュール・アップデートも忘れずに。
(2) 独自にテンプレートのクリア処理を記述する必要あり。
しかし、一回書けば使いまわしできるので、さほどの手間ではない。
今後の対応
D3 方式を使えば、
モジュール複製における テンプレートの増大が対策できて、
子供のテンプレートにも XOOPS 標準のテンプレート管理が使用できないようになりそうです。
D3 モジュールのテンプレートの仕組み
Weblinks 方式
Weblinks では、テンプレートの入れ子を行う場合、
XOOPS 標準とは異なる方法を採用しています。
(1) モジュール定義ファイル
xoops_version.php
$modversion['templates'][0]['file'] = "hoge_index.html";
$modversion['onUpdate'] = 'onupdate.php' ;
(2) プログラム・ファイル
index.php
$tpl = new XoopsTpl();
$tpl->assign("hoge_hoge", "ほげほげ");
$var = $tpl->fetch( XOOPS_ROOT_PATH."/modules/hoge/templates/parts/hoge_part.html" );
$xoopsOption['template_main'] = "db:hoge_index.html";
$xoopsTpl->assign("hoge_part", $var);
(3) テンプレート・ファイル
templates/hoge_index.html
<{$hoge_part}>
templates/parts/hoge_part.html
<{$hoge_hoge}>
(4) モジュール・アップデート・プログラム
onupdate.php
function xoops_module_update_hoge( $module )
{
// 独自にテンプレートのクリア処理を記述する
$tpl = new XoopsTpl();
$tpl->clear_compiled_tpl( XOOPS_ROOT_PATH."/modules/hoge/templates/parts/hoge_part.html" );
}
下記のように動作します。
index.php を実行すると、
hoge_part.html の変数 $hoge_hoge に値が代入される。
hoge_part.html が実行され、変数 var に実行結果「ほげほげ」が代入される。
hoge_index.html の変数 $hoge_part に $var が代入される。
hoge_index.html が実行され、
hoge_part.html の実行結果である「ほげほげ」が表示される
子供のテンプレートのコンパイル
モジュール定義ファイルに指定していないので、
モジュール・インストール時、またはアップデート時には、コンパイルされません。
Smarty の機能として、実行時に、テンプレートがなければ、自動的にコンパイルされます。
Smarty の機能として、テンプレート・ファイルが更新されれば、自動的に再コンパイルされますが。
うまく動作しないこともあります。
Weblinks では、モジュール・アップデート時に、コンパイル結果を廃棄する機能を追加しています。
これにより、更新されたテンプレートは、初回の実行時に再コンパイルされます。
利点
XOOPS 標準方式に比べ、テンプレートの種類と数が大幅に減少します。
weblinks では、親のテンプレートの数が 15 個、子供のテンプレートの数が 14 個と、大変多くなっています。
さらに、4つのモジュール複製に対応しているため、その数が4倍になります。
これを、XOOPS 標準方式で実現すると、テンプレートは 74 種類 116個になります。
Weblinks 方式では、テンプレートは 29 種類 74個になります。
欠点
(1) 子供のテンプレートには、XOOPS 標準のテンプレート管理が使用できない。
子供のテンプレートをカスタマイズするには、直接 ファイルを編集してください。
モジュール・アップデートも忘れずに。
(2) 独自にテンプレートのクリア処理を記述する必要あり。
しかし、一回書けば使いまわしできるので、さほどの手間ではない。
今後の対応
D3 方式を使えば、
モジュール複製における テンプレートの増大が対策できて、
子供のテンプレートにも XOOPS 標準のテンプレート管理が使用できないようになりそうです。
D3 モジュールのテンプレートの仕組み
| ページ移動 | |
Weblinks のメモリ使用量 (memory_usage)
|
weblinks 1.41 の性能評価
|
投票者の合計: 0
平均: 0
|
投稿された内容の著作権はコメントの投稿者に帰属します。
|








