HTML_Menu_SigmaTreeRenderer クラス概要

HTML_Menu_SigmaTreeRenderer クラス概要 --  HTML_Template_Sigma ベースのレンダラで 'tree''sitemap' 型のメニューに使用する。メニューのレベルを入れ子状のタグで表す

説明

このレンダラが作成する出力は 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_ がデフォルトのプレフィックスですが、 クラスのコンストラクタ で別のプレフィックスを指定することもできます。

テンプレート内のブロック (プレフィックスを使用しない)

tree_loop

このブロックは 常に 存在する必要があり、すべてのその他のブロックの親となります。 これは、"flow" を実装してエントリを次々にレンダリングする際に使用します。

level_open, level_close

これらのブロックを使用して、各メニューレベルの開始と終了を指定します。 レベル固有のブロック %level%_level_open および %level%_level_close が存在する場合は、 代わりにそれが使用されます。

entry_open, entry_close

これらのブロックを使用して、各エントリの開始と終了を指定します。 レベル固有のブロック %level%_entry_open および %level%_entry_close が存在する場合は、 代わりにそれが使用されます。

inactive, active, activepath

これらのブロックはメニューエントリを出力する際に使用され、 それぞれの エントリ型 に対応します。各ブロックには {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()レンダリングするメニューの型を設定します。