Wayfinderでメニューを  【解決済み】

質問全般・改善要望
sumi
メンバー
メンバー
記事: 10
登録日時: 2012年12月15日(土) 10:27

Wayfinderでメニューを

投稿記事by sumi » 2012年12月15日(土) 11:19

-----
ご利用のサーバ:
MODXのバージョン:1.0.7.J
PHPのバージョン:PHP5.3.3
MySQLのバージョン:5.0.95
ブラウザ:google chrome
-----

 初めて投稿いたします。sumiと申します。

数ヶ月前からMODXを始めました。
今回、ドロップダウンメニューを使おうと思い、[Wayfinder]をテンプレートに記述しましたが、
思うような結果が得られず、困ってしまいました。
初歩的なことで申し訳ありませんが、アドバイスをいただければと思っております。

home(id=1)
|
|-リソースA (id=2,コンテナ)
| |-サブリソース1 (id=3)
| |-サブリソース2 (id=4,コンテナ)
| | |-サブリソース3
| |-リソース4 (id=5)
|
|-リソースB (id=6,コンテナ)
| |-サブリソース5
: :
: :

このようなよくある?構造のページを作りました。

[[Wayfinder? &startId=`0` &level=`2` &outerClass=`menu`]]

とテンプレートに記述し、ページを表示したところ、
・リソースA・リソースB・・・・ とリソースの一覧は表示できました。

ドロップダウンメニューですので、例えば「リソースA」のリンクに触れたときに、
・サブリソース1
・サブリソース2
・サブリソース4

と表示してほしいのですが、・リソース2だけしか表示されませんでした。
他のリソースのリンクでも同じように全てのサブリソースを表示できていません。

Wayfinderの基本的な機能や使い方が間違っているかもしれないのですが、
初心者ですので、どう間違っているのかということが中々分かっておりません。

よろしければ、正しい記述の例などを教えて頂けないでしょうか。
よろしくお願いいたしますm (_ _)m
アバター
hisato
メンバー
メンバー
記事: 71
登録日時: 2012年8月18日(土) 20:21

Re: Wayfinderでメニューを

投稿記事by hisato » 2012年12月15日(土) 16:14

こんにちは。
CSSやjavascriptを使っていない状態のソース上でも表示されてないでしょうか?
▼ソース上に表示されている場合
CSSかjavascriptを書きなおす事で解決できます。
▼ソース上にも表示されていない場合
表示されないリソースの編集画面を見て「メニューに表示」のチェックは入っているでしょうか?
また、WayfinderはフレンドリーURLを使っていない場合、ツリーに関わらずエイリアスがかぶっていると最初のものしか表示されないようです。
これはフレンドリーURLを使うか、エイリアスを空にしたり他のどのリソースともかぶらないようにする事で回避できるようです。

投稿に書かれていた以下のスニペットコール
[[Wayfinder? &startId=`0` &level=`2` &outerClass=`menu`]]

で、デモサイトを使って試してみたところドロップダウンメニューを作成するのに必要なソースは表示されていたのでコール自体は問題ないかなと思います。
sama55
メンバー
メンバー
記事: 816
登録日時: 2009年8月03日(月) 08:16

Re: Wayfinderでメニューを

投稿記事by sama55 » 2012年12月16日(日) 08:17

sumiさんはじめまして

リソースの構造(階層)についてですが、メニューにHomeを含める一般的な構成なら、リソースAとリソースBはHomeの子ではなく、ルート直下に配置(親を0に)した方が良い気がします。普通に考えるとリソースAとリソースBをHomeの下にぶら下げたくなりますが、MODxでは(WordPressなども)好きなページをトップページに指定できるため、デザインや内容が異なるトップページを複数用意して、任意に変える場合等にも対応できます。もし、メニューにHomeを含めたくない(例えばサイトタイトルだけに索引ページへのリンク張るような)場合は、excludeDocs引数で除外することもできます。

sumi さんが書きました:

コード: 全て選択

[[Wayfinder? &startId=`0` &level=`2` &outerClass=`menu`]]


startIdが0でlevelが2ということは、ルート下の2階層まで処理することになるので、リソースA/Bまでしか処理されない気がします(サブリソース1~5は表示されない)。「サブリソース2が表示された」というのが解せませんが、試しにlevel引数を"0"(すべて[デフォルト])にしてみてください。
sumi
メンバー
メンバー
記事: 10
登録日時: 2012年12月15日(土) 10:27

Re: Wayfinderでメニューを  【解決済み】

投稿記事by sumi » 2012年12月16日(日) 10:16

hisatoさん、sama55さんお返事ありがとうございます。

hisatoさん
ご指摘を確認しました。
リストがソースにも表示されていない状態でしたので、「メニューに表示」や「エイリアス」を確認したところ、
「メニューに表示」のチェックは全て入っていました。しかし、エイリアスは自動生成された数字がいくつか被っていました。
それらを一旦消去し、フレンドリーURLを設定したところうまく表示されるようになりました!
ありがとうございます。
フレンドリーURLは未設定でしたので、エイリアスは盲点でした(汗;

sama55さん
階層構造ですが、リソースA、Bの階層はルート直下に配置しておりました。書き込みの仕方がややこしくてすみませんでした(汗。
スニペットコールで&level=`2`で目的の階層まで表示できました。
サイトのトップページを変更できるんですね。グローバル設定のサイトスタートを変えればいいんですね。
これも後々使ってみたいです。

色々と教えてくださりありがとうございます。
まだまだ初心者ですので、またお世話になるかと思います(汗
その時もよろしくお願いいたしますm(_ _)m