flyingjunk.NETでのWayfinder設定例

2011年01月08日 00:18

flyingjunk.NETで利用しているメニュー構成についてのメモ。

Wayfinderのテンプレートやパラメータはくnavigation.config.phpというファイルにまとめて保存している。
このため、MODxテンプレート内でのスニペットコールは以下のように、シンプルになる。


[[Wayfinder? &startID=`0` &config=`navigation` ]]

navigation.config.phpの内容


<?php

// Wayfinder Configuration //

// テンプレート設定 //
$outerTpl = '@CODE:<ul [+wf.classes+]>[+wf.wrapper+]</ul>';

$rowTpl = '@CODE:<li [+wf.classes+]><a href="[+wf.link+]"
title="[+wf.title+]">[+wf.linktext+]</a>[+wf.wrapper+]</li>';

$innerTpl = '@CODE:<ul [+wf.classes+]>[+wf.wrapper+]</ul>';

$innerRowTpl = '@CODE:<li [+wf.classes+]><a href="[+wf.link+]"
title="[+wf.title+]">[+wf.linktext+]</a>[+wf.wrapper+]</li>';

$hereTpl = '@CODE:<li [+wf.classes+]><
span style="font-weight: bold;">[+wf.linktext+]
</span>[+wf.wrapper+]</li>';

$innerHereTpl = '@CODE:<li [+wf.classes+]>
<span style="font-weight: bold;">
[+wf.linktext+]</span>[+wf.wrapper+]</li>';

$parentRowTpl = '@CODE:<li [+wf.classes+]>
<a href="[+wf.link+]" title="[+wf.title+]">[+wf.linktext+]</a>
<span style="color: red; font-weight: bold">*</span>
[+wf.wrapper+]</li>';

// パラメータ :: 出力様式 //
$hideSubMenus = 'TRUE';
$level = '3';

// パラメータ :: 出力内容(ドキュメント変数)//
$titleOfLinks = 'introtext';

// パラメータ :: スタイルシートセレクタ名 //
$outerClass = 'topmenu';
$rowClass = 'menuitem';
$innerClass = 'submenu';
$hereClass = '';
$selfClass = 'currentitem';
$parentClass = 'parentitem';

?>




本来テンプレートをチャンクとして保存しスニペットコール内でチャンク名を指定しているところを、ここではconfigファイルにまとめたため、パラメータの指定はなくなり変数にテンプレートのソースコードを代入するといった形になっている。
他のパラメータや、スタイルシートのクラス名、id名も同様。

例えばテンプレートパラメータ"&outerTpl"に相当するのは"$outerTpl"という変数名となる。
以下、テンプレートパラメータと設定ファイル用の変数名は一括して「テンプレート」と表記し、名前は本来のテンプレートパラメータで表記する。

使用しているテンプレート
&outerTpl
&rowTpl
これらはデフォルト設定のテンプレートがあるため、今回作成するメニューでは本来記述しなくてもいいが、記述法と働きを学ぶため敢えて指定している。

&innerTpl
&innerRowTpl
&innerTplはサブメニュー(2階層目以下)を字下げして出力するために使用。
&innerRowTplはサブメニュー項目の文字サイズを小さくするために使用。

&hereTpl
&innerHereTpl
これらは選択中のアイテムにリンクを設定しないために使用する。&hereClassは第1層のみ、&innerHereTplはサブメニュー用。

&parentRowTpl
サブメニューをもつ親アイテムを識別しやすくするためのテンプレート。リンクテキストの後ろに*をつけて出力する。

出力様式のためのパラメータ
$hideSubMenus
$level
親ドキュメントがカレントアイテムの場合のみサブメニューを表示させたいので$hideSubMenusに"TRUE"を指定。
メニュー全体の出力階層は"3"に設定。

スタイルシート設定用パラメータ
&outerTpl用に"topmenu"。
&innerClass用に"submenu"。
&rowClass用に"menuitem"。&rowClassは&outerTpl、&innerTpl共通。

&hereClassは、デフォルトでカレントアイテムとその親系統すべてに適用されてしまうので、空白とする。
代わりに&selfClassを指定して、カレントアイテムのみに書式を割り当てる(親系統には適用しない)。
これにより表示中のページのメニュー項目のみ色:クリムゾン、ボールド文字で出力。
親系統は他のメニューアイテムと同じ出力とする。

&parentClassはサブメニューをもつアイテムの識別用として&parentRowTplと組み合わせるつもりだが、いまのところ意図通り使えていないのでテンプレートの適用優先順位を含めて、要検証。
スポンサーサイト


コメント

    コメントの投稿

    (コメント編集・削除に必要)
    (管理者にだけ表示を許可する)

    トラックバック

    この記事のトラックバックURL
    http://flyingjunk.blog25.fc2.com/tb.php/338-67b64810
    この記事へのトラックバック


    最近の記事

    オンラインアルバム