有難う御座います。yama さんが書きました:Dittoの使い方は他の人が詳しいかも?また何か方法思いついたら連絡しますね
そうですか、このご回答ということは、やり方は間違っていなかったということだと理解いたしました。
そして、yama様でもできないとなると理由は解りませんが相当な難問なんだと理解致しました。
あきらめようかと思います。
有難う御座います。yama さんが書きました:Dittoの使い方は他の人が詳しいかも?また何か方法思いついたら連絡しますね
なるほど、そういうことでしたか。Dittoのオプションですか。私もネットで探してみます。yama さんが書きました:いえ、もう少しスマートな方法がないかなと思ったので。Dittoのオプションでありそうな気がしますので、今度調べてみます
コード: 全て選択
<?php
if($output==$modx->documentObject['id']) return ' class="active"';
?>
コード: 全て選択
[!Ditto? &parents=`44` &display=`30` &tpl=`@CODE:<li[+id:isActive+]><a href="[+url+]" title="[+pagetitle+]" [+type:別窓+]>[+menutitle+]</a></li>` &paginate=`0` &paginateAlwaysShowLinks=`0` &dateSource=`pub_date` &id=`sbar_traininglist` &orderBy=`pub_date ASC` &hideFolders=`1` &depth=`3`!]
コード: 全て選択
<ul>
<li><a href="http://mysite.jp/event/01.html" title="イベント1" >イベント1</a></li>
<li><a href="http://mysite.jp/event/02.html" title="イベント2" >イベント2</a></li>
<li><a href="http://mysite.jp/event/03.html" title="イベント3" >イベント3</a></li>
</ul>
コード: 全て選択
<?php
if($output==$modx->documentObject['id']) return ' class="active"';
?>
コード: 全て選択
<ul>
[!Ditto? &parents=`44` &display=`30` &tpl=`@CODE:<li[+id:isActive+]><a href="[+url+]" title="[+pagetitle+]" [+type:別窓+]>[+menutitle+]</a></li>` &paginate=`0` &paginateAlwaysShowLinks=`0` &dateSource=`pub_date` &id=`sbar_event` &orderBy=`pub_date ASC` &hideFolders=`1` &depth=`3`!]
</ul>
コード: 全て選択
<ul>
[[Ditto? &parents=`**` &orderBy=`**` &tpl=`nav_usual` &tplCurrentDocument=`nav_current`]]
</ul>
コード: 全て選択
<li><a href="[~[+id+]~]">[+longtitle+]</a></li>
コード: 全て選択
<li class="current"><a href="[~[+id+]~]">[+longtitle+]</a></li>
コード: 全て選択
<ul>
[!Ditto? &hideFolders=`0` &parents=`49` &display=`30` &tpl=`Nv-Sbar_Usual` &tplCurrentDocument=`Nv-Sbar_Current` &paginate=`0` &paginateAlwaysShowLinks=`0` &dateSource=`pub_date` &id=`sbar_list` &orderBy=`pub_date ASC` &depth=`3`!]
</ul>
コード: 全て選択
<li><a href="[+url+]" title="[+pagetitle+]" [+type:別窓+]>[+menutitle+]</a></li>
コード: 全て選択
<li class="active"><a href="[+url+]" title="[+pagetitle+]" [+type:別窓+]>[+menutitle+]</a></li>
についてですが、多分Dittoでは出せないのでは…と思います。カテゴリトップページ、つまり親リソース(親フォルダ)のページがサイドバーのリンク群に出力されていません
コード: 全て選択
<div class="sidebar">
<p><a href="[~2~]">イベント</a></p>
<ul class="eventlist">
[[Ditto? &parent=`2` &orderBy=`pub_date ASC` &tpl=`nav_usual` &tplCurrentDocument=`nav_current`]]
</ul>
</div>
コード: 全て選択
<html>
<head>(略)</head>
<body>
~(略)~
{{sidebar}} <!-- サイドバーの表示位置にチャンク名を書く -->
</body>
</html>
aki さんが書きました:※2013/2/27 0:46追記
Root
┣【トップページ】(ID:1)
┣【イベント】(ID:2)<-------------------- 一番古いイベントを自動表示
┃├ イベント2月20日(ID:14)
┃├ イベント2月16日(ID:13)
┃├ イベント2月08日(ID:12)
┃├ イベント2月03日(ID:11)
┃└ イベント1月23日(ID:10)
┣【製品案内】(ID:3)
┗【会社概要】(ID:4)
●隅付き括弧(【】のもの)は、フォルダ(ページ設定で「コンテナとして扱う」にチェックが入っている)
<< 確認 >>
最初の投稿に、イベントトップを開いたとき、「一番古いイベントを自動で表示」と書かれていますが、
イベントトップ(ID:2)にアクセスしたら、上記のような構成の場合、自動的に1月23日(ID:10)のページに
ジャンプするという意味でしょうか?
※例えば、イベントトップで「phiRedirect」や「FirstChildRedirect」といったスニペットを使用している?
コード: 全て選択
<h1>[!Ditto? &tpl=`@CODE:[+longtitle+]` &display=`1` &orderBy=`pub_date ASC`!]</h1>
[!Ditto? &parents=`44` &display=`1` &tpl=`@CODE:[+content+]` &paginate=`0` &paginateAlwaysShowLinks=`0` &dateFormat=`%Y年%-m月%-d日` &dateSource=`pub_date` &id=`eventtop` &orderBy=`pub_date ASC` &hideFolders=`1` &depth=`0`!]
なるほど、Dittoの中にですよね。このようなものは記述していないです。aki さんが書きました: ※例えば、イベントトップで「phiRedirect」や「FirstChildRedirect」といったスニペットを使用している?
はい、その通りです。aki さんが書きました: もし、そうだとしますと、サイドバーでハイライトなど表示が変更されるべきなのは、
・イベントトップにアクセス >> イベント1月23日(が表示されるのだから、ここをハイライト)
・イベント2月20日にアクセス >> イベント2月20日
~以下、個別のイベントページは同様~
・イベント1月23日にアクセス >> イベント1月23日
ということですよね?
aki さんが書きました:※2013/2/27 0:46追記
イベントページのリンク先は「http://130226210657-1949.evo.demo.modx. ... t.html」ですが、
イベントトップにアクセスされたら一番古いイベントを表示させるとのことなので、
自動的に「http://130226210657-1949.evo.demo.modx. ... l」へジャンプします。
その際、サイドバーに見立てたリンク一覧でも、ちゃんと「2月8日」のリンクに色が付いているので
これでご希望の動作をほぼ満たしていると思うのですが……こういう理解で合っていますか?
aki さんが書きました: ※このデモ自体は、先程の「tplCurrentDocument」を使って実現しています。
※背景色は、外部スタイルシートではなく「li要素」に「style属性」で直接付け加えました。
※エレメント>テンプレート>xRay と エレメント>チャンク>test の部分が私が触ったところです。
http://forum.modx.jp/viewtopic.php?f=7& ... t=10#p6103
こちらの投稿だと、そうなっていないようなので不思議なのですが、ページをジャンプさせているわけではないのでしょうか?
コード: 全て選択
<h1>[!Ditto? &tpl=`@CODE:[+longtitle+]` &display=`1` &orderBy=`pub_date ASC`!]</h1>
[!Ditto? &parents=`44` &display=`1` &tpl=`@CODE:[+content+]` &paginate=`0` &paginateAlwaysShowLinks=`0` &dateFormat=`%Y年%-m月%-d日` &dateSource=`pub_date` &id=`eventtop` &orderBy=`pub_date ASC` &hideFolders=`1` &depth=`0`!]
hidefoldersとは親リソースの中の親リソースのことなんですね。aki さんが書きました: それとは別の問題として、以下で返信されている
http://forum.modx.jp/viewtopic.php?f=7& ... t=10#p6104
http://forum.modx.jp/viewtopic.php?f=7& ... t=10#p6106についてですが、多分Dittoでは出せないのでは…と思います。カテゴリトップページ、つまり親リソース(親フォルダ)のページがサイドバーのリンク群に出力されていません
Dittoは、「parents」で指定したフォルダ(コンテナ)以下のドキュメントの一覧を出力するスニペットで、
「hideFolders」は、親として指定したフォルダの中にさらに作ったフォルダをメニューとして出力するかどうかのパラメータだと思います。
おっしゃるとおりでして、これまではこのように親リソースだけを個別に追記する方式で最初はやっていました。aki さんが書きました: どう解決するかですが、リンク一覧をDittoのみで実現しようとすると難しいのかもしれません。
(サイト内の親子全てのリンクを出すならおそらくWayFinder?私はあまり使わないので詳しくないです)
イベントカテゴリ内のみ、サイドバーが表示されれば良いのなら、
例えば、「sidebar」というチャンクを作ります。(HTMLの書き方は一例です)サイドバーを呼び出す部分のHTML(多分テンプレートかな?)に以下のように追加します。コード: 全て選択
<div class="sidebar"> <p><a href="[~2~]">イベント</a></p> <ul class="eventlist"> [[Ditto? &parent=`2` &orderBy=`pub_date ASC` &tpl=`nav_usual` &tplCurrentDocument=`nav_current`]] </ul> </div>
こういった具合でチャンクと組み合わせ、Dittoを補助的に使うのではダメでしょうか?コード: 全て選択
<html> <head>(略)</head> <body> ~(略)~ {{sidebar}} <!-- サイドバーの表示位置にチャンク名を書く --> </body> </html>
このやり方だと、IDの数字決め打ちでリンクさせている部分があるので、変更がある場合は手動で書き換えなければいけませんが、
コンテンツ数が少ないサイトなら、十分対応できるかと思います。
コード: 全て選択
[!Wayfinder? &startId=`0` &includeDocs=`49`!]
[!Wayfinder? &startId=`[[UltimateParent]]` &sortOrder=`asc`!]
これは、特に難しく考える必要はなくて、コンテナ=Web制作で言うところの「ディレクトリ」みたいなもの(と私は理解しています)です。「コンテナとして扱う」をネット検索しましたが、どうにも意味不明な感じでよく意味がつかめませんでした。
はい、私もディレクトリとかカテゴリだとか何となく思っておりました。aki さんが書きました:こんばんは。
うーん。実際にサイトの構造を見てみないと、どこで引っかかっていらっしゃるのか、わからないかもしれません。
これは、特に難しく考える必要はなくて、コンテナ=Web制作で言うところの「ディレクトリ」みたいなもの(と私は理解しています)です。「コンテナとして扱う」をネット検索しましたが、どうにも意味不明な感じでよく意味がつかめませんでした。
MODXでは、「コンテナ(ディレクトリ)の中にサブリソース(ページ)がある」という表現になっています。
やりたいことですが、完全に伝わっていないかもしれないのでご案内いたします。aki さんが書きました: どこで引っかかっているのかを判別するのが難しいので、「私ならこう作る!」というものを
デモサイトで作らせていただきました。
http://130227230250-1949.evo.demo.modx.jp/
http://130227230250-1949.evo.demo.modx.jp/manager/ (管理画面、ID・パスともにmodx)
やりたいのは、こういうことです…かね?
本当にありがとうございます。aki さんが書きました: エレメント管理内の「テンプレート」と「チャンク」に「aki-TEST」というカテゴリを作って、
私が追加したものを表示しています。
それ以外は、ご使用の環境に一番近い「1.0.5J-r8」のデフォルトのままです。
スニペットやプラグインの追加は特にしていません。
イベントカテゴリが無い、アクセスが多い方のサイトの方である1.0.6J-r8のMODXサイトの方がaki さんが書きました: 結局、Wayfinderで実現してみたのですが、いかがでしょうか?
Wayfinderであれば普通に用意されているパラメータと一部チャンクを作ってあげることで
階層構造のサイトメニューを表示し、現在地の表示も分けることが可能でした。
なるほど、承知しました!aki さんが書きました: 本題からは外れますが、前回投稿内の「phiRedirect」「FirstChildRedirect」は、
それぞれ指定のドキュメントにリダイレクトを設定するためのスニペットの名前で、Ditto内に指定するパラメータ等ではありません。
今回、リダイレクトは使われていないようなので気にしないでください。
(※気になる場合は、これらスニペットの名前で検索してみてください)
はい、最後に投稿いただいことを本日午前三時台に知ってこの期限を知ったので、それから大慌てで取り組んでおります。aki さんが書きました: デモサイトは、24時間で消えてしまうそうなので、何か必要な内容があればメモ帳などに適当にコピーを取ってください。
(※2/27の23時頃に作成しました)
modxfan さんが書きました:aki様、大変ありがとうございます。aki さんが書きました: 結局、Wayfinderで実現してみたのですが、いかがでしょうか?
Wayfinderであれば普通に用意されているパラメータと一部チャンクを作ってあげることで
階層構造のサイトメニューを表示し、現在地の表示も分けることが可能でした。
イベントTOPを開いたら、イベント1(最古)が開きますが、Dittoで作成されているようですが、
このDittoでなぜ最古が指定されるのか?というと、この二番目のDittoが実際はorderBy=`ASC`で(未記入だとデフォルトのASCになる)、
displayが1番目だけを出力させるので、最古が出力される、ということですよね。ですので、ここはばっちりのようです。コード: 全て選択
[[Ditto? &parents=`2` display=`1` &tpl=`@CODE:<p style="color:#c00;">ここはイベントTOPですが、内容は[+pagetitle+]です。</p>`]] [[Ditto? &parents=`2` display=`1` &tpl=`@CODE:[+content+]`]]
次が他のこれまでの方策と同じで、やはり達成できていないように見受けられます。
aki様が作成されたチャンクのcase03のWayfinderのソースでは、StartIDが1になっています。
つまりトップレベルから出力するようになっています。これですと当然ながらサイドバーに全てのページが表示されてしまいます。
しかし私が当初からおこないたいのはStartIDは1ではありませんので、ここはイベントカテゴリのIDに変更しました。
サイドバーに表示させたいリンク群は、現在開いているページが所属するカテゴリ以下のリンク群なので。
そしてこの状態で表示してみると、これまでの方策と同じく親リソースであるイベントトップページがサイドバーに出ませんでした。
試しに今、aki様のデモサイトの方でStartIDを2、つまりイベントカテゴリの親リソースの番号にしてみたところ、
私のサイトと同じ現象になりました。イベントカテゴリの親リソースだけでなく、他の親リソースも、「ホーム」も全て消えて、
出力されるのは私の現象と同じで、イベントカテゴリの子ページだけです。
WayfinderもDittoと変わらない機能しか持っていないようでしょうか。
イベントカテゴリの子リソースだけでなく、イベントカテゴリの親リソースも自動で出力したいのが当初からの希望なので、
どの方法もこれが達成されてくれず残念です・・・
「この親リソースのページ群を表示させよ」というだけのことがどうしてこんなにもすぐに出来ないのかがっかりな心境です・・・・・
この表示はとても頻繁に必要となる出力パターンなのに・・・
いちいちカテゴリごとに手動でIDを記載していくとか、個別にif文でプログラムしていくなどというのは
せっかくのCMSで本来おこなうべきものではないので、なんとかCMSの機能でおこないたいものですが、
これがMODXの限界なんでしょうかね・・・(MODXがんばれぇ)
親リソースとその一味を出力する変数がMODXに用意されていれば、それを記述するだけでいいんですが・・・
とにかくこの状態になれば良いなら、Dittoを2回使えばできそうだったので、サンプルを追加しました。modxfan さんが書きました:イベントカテゴリの子リソースだけでなく、イベントカテゴリの親リソースも自動で出力したい
別に問題とかはないですね。modxfan さんが書きました:はい、私もディレクトリとかカテゴリだとか何となく思っておりました。
ディレクトリの役目をさせるページだけチェックONするようですが、うっかりチェックOFFにして
親リソースを作成しても、何も問題が表沙汰にならないので「意味あるのかな?」と思っておりました。
これは、modxfanさんがこの方法でTOPと最古のページ内容を同じにしているようでしたので、それにならっただけです。modxfan さんが書きました:イベントTOPを開いたら、イベント1(最古)が開きますが、Dittoで作成されているようですが、(以下略)
これはHTMLのルール上、入れ子リストを作るならそのようにマークアップするのが決まりですので、そうなりますね。modxfan さんが書きました:どうやらul、liタグの中にまたul、liタグが出力される式のようで、それが原因で最初の親リソースのハイライトが
その入れ子の子リソースすべてを包含するようになっていました。
Wayfinderは、繰り返しているわけではないですね。呼び出しているのは一度だけです。modxfan さんが書きました:Wayfinderを二回繰り返しているということかな?ならばもしかしてDittoでもできるとか?
使い始めの頃は、私もよくそのような状態になり、どこに何の設定を書いたか分からなくなってmodxfan さんが書きました:パーツがあっち飛びこっち飛びすぐに外部ファイル化していくので
全容を把握するのが当方では簡単ではなく。