このレンダラが作成する出力は HTML_Menu_DirectTreeRenderer によるものと似ていますが、出力を、よりカスタマイズできるようになっています。
このレンダラは、おそらく HTML_Template_IT のインスタンスを渡してもうまく動作するでしょう。 しかし、メニューのテンプレートは多くのブロックで構成されることになりがちです。 HTML_Template_Sigma の キャッシュ機能 により、パフォーマンスの劇的な向上が期待できます。
これが HTML_Menu_SigmaTreeRenderer 用の最低限のテンプレートです。必須ブロックをすべて含んでいます。
<!-- BEGIN mu_tree_loop --> <!-- BEGIN mu_level_open --> <ul> <!-- END mu_level_open --> <!-- BEGIN mu_entry_open --> <li> <!-- END mu_entry_open --> <!-- BEGIN mu_active --> <strong>{mu_title}</strong> <!-- END mu_active --> <!-- BEGIN mu_inactive --> <a href="{mu_url}">{mu_title}</a> <!-- END mu_inactive --> <!-- BEGIN mu_activepath --> <a href="{mu_url}"><em>{mu_title}</em></a> <!-- END mu_activepath --> <!-- BEGIN mu_entry_close --> </li> <!-- END mu_entry_close --> <!-- BEGIN mu_level_close --> </ul> <!-- END mu_level_close --> <!-- END mu_tree_loop --> |
テンプレート内のブロックやプレースホルダの先頭に mu_ というプレフィックスがついていることに注目しましょう。 これにより、既存のブロック名やプレースホルダ名との衝突を避けるようにしています。 mu_ がデフォルトのプレフィックスですが、 クラスのコンストラクタ で別のプレフィックスを指定することもできます。
テンプレート内のブロック (プレフィックスを使用しない)
このブロックは 常に 存在する必要があり、すべてのその他のブロックの親となります。 これは、"flow" を実装してエントリを次々にレンダリングする際に使用します。
これらのブロックを使用して、各メニューレベルの開始と終了を指定します。 レベル固有のブロック %level%_level_open および %level%_level_close が存在する場合は、 代わりにそれが使用されます。
これらのブロックを使用して、各エントリの開始と終了を指定します。 レベル固有のブロック %level%_entry_open および %level%_entry_close が存在する場合は、 代わりにそれが使用されます。
これらのブロックはメニューエントリを出力する際に使用され、 それぞれの エントリ型 に対応します。各ブロックには {title} プレースホルダが存在する必要があり、また {url} プレースホルダを含むことができます。 通常は、もし他のキーがもとのメニュー配列にあった場合は、 それはテンプレートの対応するプレースホルダに代入されます。
レベル固有のブロック %level%_%entry type% が存在する場合は、代わりにそれが使用されます。
HTML_Menu_SigmaTreeRenderer
HTML_Menu_SigmaTreeRenderer が継承しているメソッド
表 47-1HTML_Menu_Renderer から継承したもの
メソッド名 | 概要 |
---|---|
HTML_Menu_Renderer::finishLevel() | ツリーのレベルを終了します ('tree' 型および 'sitemap' 型用)。 |
HTML_Menu_Renderer::finishMenu() | メニューを終了します。 |
HTML_Menu_Renderer::finishRow() | メニューの行を終了します。 |
HTML_Menu_Renderer::renderEntry() | メニューの要素をレンダリングします。 |
HTML_Menu_Renderer::setMenuType() | レンダリングするメニューの型を設定します。 |