このレンダラは、 HTML_Template_Sigma を使用して HTML を生成します。あなたがこのテンプレートエンジンを使用しているなら、 これを使用すると HTML_Menu を簡単に自分のサイトに組み込めるようになります。
このレンダラを使用すると、 HTML_Menu_DirectRenderer よりも柔軟に出力をカスタマイズすることができます。
このレンダラは、おそらく HTML_Template_IT のインスタンスを渡してもうまく動作するでしょう。 しかし、メニューのテンプレートは多くのブロックで構成されることになりがちです。 HTML_Template_Sigma の キャッシュ機能 により、パフォーマンスの劇的な向上が期待できます。
すべてのメニュー型の出力に対応した最低限のテンプレートは、このようになります。
<!-- BEGIN mu_menu_loop --> <table cellpadding="2" cellspacing="0" border="1"> <!-- BEGIN mu_row_loop --> <tr> <!-- BEGIN mu_entry_loop --> <!-- BEGIN mu_inactive --> <td><!-- BEGIN mu_inactive_indent --> <!-- END mu_inactive_indent --><a href="{mu_url}">{mu_title}</a></td> <!-- END mu_inactive --> <!-- BEGIN mu_active --> <td><!-- BEGIN mu_active_indent --> <!-- END mu_active_indent --><strong>{mu_title}</strong></td> <!-- END mu_active --> <!-- BEGIN mu_activepath --> <td><!-- BEGIN mu_activepath_indent --> <!-- END mu_activepath_indent --><a href="{mu_url}"><strong>{mu_title}</strong></a></td> <!-- END mu_activepath --> <!-- BEGIN mu_previous --> <td><a href="{mu_url}"><<< {mu_title}</a></td> <!-- END mu_previous --> <!-- BEGIN mu_next --> <td><a href="{mu_url}">{mu_title} >>></a></td> <!-- END mu_next --> <!-- BEGIN mu_upper --> <td><a href="{mu_url}">^ {mu_title} ^</a></td> <!-- END mu_upper --> <!-- BEGIN mu_breadcrumb --> <td><a href="{mu_url}">{mu_title}</a> >>></td> <!-- END mu_breadcrumb --> <!-- END mu_entry_loop --> </tr> <!-- END mu_row_loop --> </table> <!-- END mu_menu_loop -->
カスタマイズの方法を示すもう少し複雑な例が、 パッケージのアーカイブに含まれています。
テンプレート内のブロックやプレースホルダの先頭に
mu_
というプレフィックスがついていることに注目しましょう。
これにより、既存のブロック名やプレースホルダ名との衝突を避けるようにしています。
mu_
がデフォルトのプレフィックスですが、
クラスのコンストラクタ
で別のプレフィックスを指定することもできます。
menu_loop
もしこれが存在すれば、現在のメニューあるいは
('rows'
型の場合の)
メニューレベルを出力したあとにこのブロックが
parse() されます。メニューの型が
'rows'
で %level%_menu_loop
ブロックが存在する場合は、代わりにそれが
parse() されます。
row_loop
もしこれが存在すれば、現在のメニューの行を出力した後でこのブロックが
parse() されます。メニューの型が
'rows'
で %level%_row_loop
ブロックが存在する場合は、代わりにそれが
parse() されます。
entry_loop
このブロックは 常に 存在する必要があり、すべてのメニューエントリのブロックの親となります。 これは、"flow" を実装してエントリを次々にレンダリングする際に使用します。
メニューの型が 'rows'
で
%level%_entry_loop
ブロックが存在する場合は、
代わりにそれが使用されます。
inactive
, active
, activepath
, previous
, next
, upper
, breadcrumb
これらのブロックはメニューエントリを出力する際に使用され、
それぞれの エントリ型
に対応します。各ブロックには {title}
プレースホルダが存在する必要があり、また {url}
プレースホルダおよび indent
ブロックを含むことができます。
メニューの型が 'tree'
、
'sitemap'
あるいは
'rows'
のいずれかで
%level%_%entry type%
ブロックが存在する場合は、
代わりにそれが使用されます。
inactive_indent
, active_indent
, activepath_indent
もしこれらが存在すれば、ツリー形式のメニュー
('tree'
および 'sitemap'
)
においてエントリの字下げを行う際に使用されます。
HTML_Menu_SigmaRenderer
HTML_Menu_SigmaRenderer が継承しているメソッド
メソッド名 | 概要 |
---|---|
HTML_Menu_Renderer::finishLevel() | ツリーのレベルを終了します ('tree' 型および 'sitemap' 型用)。 |
HTML_Menu_Renderer::finishMenu() | メニューを終了します。 |
HTML_Menu_Renderer::finishRow() | メニューの行を終了します。 |
HTML_Menu_Renderer::renderEntry() | メニューの要素をレンダリングします。 |
HTML_Menu_Renderer::setMenuType() | レンダリングするメニューの型を設定します。 |
Prev | HTML_Menu | Next |
ArrayRenderer::toArray() | PEAR Manual | constructor HTML_Menu_SigmaRenderer() |