最近の記事

MODx Reflectスニペットのごく簡単な解説

MODxのDittoスニペット2.x系とセットで提供されるようになったReflectスニペットについて、ごく簡単に。これ自分メモに近いんで、いずれ誰かくわしい人がまとめてくれたらうれしいです。
Dittoスニペット・Reflectスニペット公式解説

Reflectスニペットとは

ドキュメントを、主に日付順で簡潔に表示するためのスニペット。ブログとかでよくある「2007年5月の記事一覧」みたいな日付アーカイブをを作るために使います。Dittoスニペットから分化。MODx0.9.6で正式採用です。なお、2007年5月上旬に発売されたMODx本「MODxでつくる!最強のCMSサイト」は、MODx0.9.5を中心に書かれた解説書なので、Dittoは1.x系。Reflectスニペットの動作解説はありません(少なくともぼくは気づかなかった)。
ちなみに、Ditto内蔵テンプレートの日付アーカイブ表示は、Ditto1.x系とDitto2.x系で以下のような違いがあります。
  • Ditto1.x……「最近のドキュメントは普通に一覧表示。その下に、古いドキュメントをまとめて日付アーカイブ簡略表示」という動作。
  • Ditto2.x……Ditto本体は「ドキュメントの高度な並べ替えや、指定した形式での出力」に特化。日付アーカイブ風表示機能はReflectスニペットにおまかせしている。そのため、Ditto内蔵テンプレートから「古いドキュメントの簡略表示」機能がなくなってる(設定次第では出せるのかもしれないけど、素や素に近い状態では表示されない)。

Reflectスニペットの基本動作

Reflectスニペットの実際の動作を超おおざっぱに見てみると、
  1. ドキュメントを日付アーカイブ風表示する。
  2. 日付関連の各種指定を、MODx的な書式(≒パラメータをちょこっと付け足す)で割と簡単に出来るようにしている。
  3. ちょっとした設定の工夫でDittoとReflectを連携させ、細かい表示の切り替えを(MODx的には)割と簡単に出来るようにしてる。
  4. なお、内部的にはReflect自体が高度な処理を行っているわけではなく、Dittoの機能を借りて基本的な処理をしている。
です。(※注意:PHPやMySQLは初歩的な事しか知らないんで、あくまでsnippet.reflect.phpやhttp://ditto.modxcms.com/をざっと見た印象です。実際の内部動作はぜんぜん違うかもしれません)

Reflectスニペットのごく簡単な設定方法

http://ditto.modxcms.com/にはいろいろ書いていますが、要するに
  • dittoSnippetParametersに、Dittoのパラメータを「パラメータ名:値」の形式で入れる。
  • 複数パラメータを指定する場合は「パラメータ名1:値1|パラメータ名:値2」のようにパイプで区切る。
のが基本です。
現状では、表示開始の基準ドキュメントIDを指定するパラメータ(parentsなど)はほぼ必須(※startIDでも一応動くけど、Ditto2.x系では確か非推奨になったはず)。
[!Reflect? &dittoSnippetParameters=`parents:0`!] という感じで書けば、基準点(上記の例ではID0。つまりサイトトップ)から見て一番上の階層(depth:1)にあるドキュメントが、年・月などをグループ化の基準とした日付アーカイブ風に表示されます。
パラメータを「&dittoSnippetParameters=`parents:0|depth:2`」とすれば、2階層目のドキュメントまで含めて表示。depthを0にする(&dittoSnippetParameters=`parents:0|depth:0`)と、サイト内の全ドキュメントを表示。

Dittoとの連携で、より細かい動作

Reflectは単体でも使えるけど、Dittoと組み合わせるとより複雑な動作を実現できます。 以下は、公式サイトの参考例を元に、少しわかりやすく書き足したものです。原文はWordPress style archivesをどぞ。

上記ページに何が書いてあるかというと「WordPressみたいな普通のブログの月別アーカイブ表示っぽいモノを、MODxで作ってみよう」です。もう少し詳しく言うと、
  • Reflectスニペットで月別アーカイブ表示。Reflectスニペットは「March 2007」「December 2006」のように、月別リンクのみを表示。
  • 月別リンクをクリックすると「その月に書かれたドキュメント一覧」が見れる。これはReflectスニペットではなくDittoスニペットで生成している。
  • さらに各ドキュメントへのリンクをクリックすると、ドキュメントを見れる。

原文は「ID2」を使いすぎてて少々ややこしいので、以下の例では、
  • ReflectスニペットはドキュメントID47に設置。
  • DittoスニペットはドキュメントID48に設置。
  • で、ReflectとDittoは、ドキュメントID2に属するドキュメント群を日付アーカイブ表示する。
とします。

ReflectスニペットのあるドキュメントID47側の記述
[!Reflect?config=`wordpress` &targetID=`48` &getDocuments=`1` &dittoSnippetParameters=`parents:2`&id=`wp`!]
  • targetID……Dittoを設置しているドキュメントのID(上の例では「48」)を指定。この指定により、Reflectスニペットが生成する月別リンクなどをクリックすると、ドキュメントID48に飛ぶようになる。「48」は自分のサイトの中身に応じて書きかえ。
  • getDocuments……1に設定すると、idを指定していてもドキュメントを取得(?)。とりあえず、idを指定した時はgetDocuments=`1`、idを指定しない時はgetDocuments=`0`またはgetDocuments省略、でないとエラーが出る。
  • dittoSnippetParameters=`parents:2`……Reflectの日付アーカイブ表示の基準となるドキュメントID(上の例では「2」)を指定。後で述べるけど、ここの値は基本的にDitto側のparentsの値と同じにする。
  • id……ドキュメントID48のDittoインスタンスに割り当てられた固有名。上記例では「wp」。同じサイト内では名前が重複しないようにする。Reflectはこのidを元にパラメータを作成しURLに入れる。idを指定しないとDittoに正しく変数を渡せなくなり、Ditto側のextenders=`dateFilter`などが無意味になる。なお、idを指定しなかった場合、1~1000のうち適当な値がランダムに入れられる。

DittoスニペットのあるドキュメントID48側の記述
<h2>[+wp_month+] [+wp_day+] [+wp_year+]</h2> [!Ditto? &id=`wp` &extenders=`dateFilter` &parents=`2`!]
  • id……Dittoインスタンスの固有名。
  • extenders=`dateFilter`……Dittoにこの記述を入れる事で、「Reflectが生成したパラメータ付リンクを日付主体で処理し、Reflect経由で来た人に最適なドキュメントのみを表示する」ようになります。たとえばReflect側ドキュメントの「March 2007」リンクをクリックしてDitto側ドキュメントに飛んだ場合、Dittoは「2007年3月」のドキュメントのみを抽出して表示。この記述がないと、Dittoは最新の記事のみ表示したりします。
  • parents……Dittoの表示の基準となるドキュメントID(上記の例では「2」)を指定。基本的にReflect側でdittoSnippetParameters=`parents:2`みたいにしたなら、Ditto側ではparents=`2`という風に一致させる事。これが不一致の場合、ややおかしな動作になる。
    たとえばReflectでdittoSnippetParameters=`parents:0`、Dittoでparents=`2`とすると、Reflect側では「サイトトップ(ID0)から見たドキュメント群を元に生成した、月別アーカイブ」が表示される。だが、たとえば「March 2007」をクリックしてDitto側に飛ぶと「ドキュメントID2に属する、2007年3月に作成されたドキュメント」のみが表示される。よって、Reflect側ではその月に作成されたドキュメントが存在するように見えるのに、リンクをクリックしてみると適合するドキュメントがなく「no document found」と出てくる、といった問題が起こる事がある。
Ditto2:xでページ分割する場合はDitto2.xと1.xの違いを参照。まぁ要するに、「idで指定した値がプリフィックスとなって使われる」事が、MODxではしばしばあるわけです。

……

「日記しか書かない」って事なら、きっとWordPressの方が簡単ですよね。うん

こうやって書き連ねてみると、「ブログなら、仕組みをほとんど意識する事なく直感的に設定出来る」事が、MODxでは結構面倒だと改めて気づきました。というか、ぼく自身は「MODxで日付アーカイブを作る」という考えがほとんどなかったし。「日付重視で記事を書く? なら、ブログを使った方がいいよ」という発想だったんで。
レンタルブログやWordPressやMovable Typeあたりは、「ReflectとDittoを連携させて…」みたいな事をあまり考えなくても、割と簡単に月別アーカイブを表示出来るわけだし。

それでも、MODxはぜひ使ってみてほしいわけです。理解してしまうとそれなりに簡単だし。つーか、そもそもMODxは「日付順にあまりこだわらず、自由な順番にコンテンツを並べ、自由な配置をする」のに向いたCMS、と思う。
後、サイト内であれこれ細かい数値処理をやる場合は、「どうこう言ってMODxが圧倒的に簡単」な場合が多いんで。
TAG :
CMS
MODx
WordPress

トラックバック


この記事にトラックバックする(FC2ブログユーザー)

コメントの投稿

Private :

BD/DVD/CD
リンク(公式サイトとか)
カテゴリ
ブログ内検索
最近のコメント
プロフィール

せれすと

Author:せれすと
アニメ:涼宮ハルヒの憂鬱、ガールズ&パンツァー


トラックバックやリンクは、自由に張ってください。

<推奨ブラウザ>
◎Opera/Firefox系 ○Chrome系/Safari △IE
主に使っているのは、OperaとFirefoxです。

ブロとも申請フォーム

この人とブロともになる

RSSフィード
タグリスト

アニメ マクロスF 涼宮ハルヒの憂鬱 いとうのいぢ ななついろ★ドロップス コードギアス らき☆すた 宙のまにまに OP 視聴予定 ゲーム とある科学の超電磁砲 オリコン けいおん!! ED PS2 挿入歌 WORKING!! AngelBeats! ソ・ラ・ノ・ヲ・ト 漫画 坂本真綾 ながされて藍蘭島 乃木坂春香の秘密 コミック ブログ投票 はなまる幼稚園 瀬戸の花嫁 とある魔術の禁書目録 アニメ作風考察 true_tears アニメ誌 化物語 ハヤテのごとく! ARIA CMS 涼宮ハルヒの戸惑 サントラ ゆるゆり NewType 動画 灼眼のシャナ バスカッシュ! スクールデイズ WordPress マクロス DVD けいおん! 黒執事 涼宮ハルヒちゃんの憂鬱 キミキス とある魔術の禁書目録II 魔法少女まどか☆マギカ 狼と香辛料 ロザリオとバンパイア この青空に約束を ガンダム00 エヴァンゲリオン 侵略!イカ娘 侵略!?イカ娘 ベン・トー 相関図 インフィニット・ストラトス 俺の妹がこんなに可愛いわけがない ブログ BD フィギュア かんなぎ たまゆら 宇宙をかける少女 シゴフミ 逆境無頼カイジ 神曲奏界ポリフォニカ もってけ!セーラーふく コミックス さよなら絶望先生 MODx ストライクウィッチーズ 黒神 鉄腕バーディー セキレイ カイジ スケッチブック ベルセルク ゼロの使い魔 長門有希 CD 京アニ ユニゾンシフト sola クレイモア もってけ!セーラーふく ポリフォニカ 侵略!イカ娘 ロロナのアトリエ みつどもえ ライトノベル DS ヱヴァンゲリヲン WORKING´!! YouTube Drupal Firefox PSP Little_Lovers_2nd ゴルゴ13 windows_xp CLANNAD 灼眼のシャナII ダ・カーポII 絶対可憐チルドレン 破天荒遊戯 DokuWiki 君が主で執事が俺で しゅごキャラ! インターネット ブログ検索 RD潜脳調査室 ロボテック firefox ヴィンランド・サガ 薬師寺涼子 カドゥン 電撃文庫 H2O Movable_Type PC PV FC2ブログ ブルードロップ ニュース 声優 坂井泉水 バイク 撲殺天使ドクロちゃん ユーチューブ どきどき魔女神判 歌詞 字幕.in 字幕 地球へ 涼宮ハルヒ 小岩井フローラ ef ご愁傷さま二ノ宮くん プリズム・アーク レンタルマギカ ドラゴノーツ スレイヤーズ バンブーブレード 京都アニメーション スカイガールズ 色彩 こどものじかん ねんどろいど 同人誌 祝福のカンパネラ オオカミさんと七人の仲間たち アマガミSS 学園黙示録 あそびにいくヨ! 聖地巡礼 Newtype 水樹奈々 聖地 Google日本語入力 バカとテストと召喚獣 生徒会役員共 神のみぞ知るセカイ ロウきゅーぶ! 森田さんは無口 神様ドォルズ 僕は友達が少ない 日記 フラクタル ミルキィホームズ ヨスガノソラ 夢喰いメリー お兄ちゃんのことなんかぜんぜん好きじゃないんだから 生徒会の一存  まりあ†ほりっく ホワイトアルバム 明日のよいち! アニソン ラノベ アルバム 鉄のラインバレル アニメージュ イラスト ジブリ とらドラ! RIDEBACK Opera ヒャッコ 青い花 科学 ゴンゾ jQuery Slimbox けいおん JavaScript Web制作 Lightbox アニメディア 

BD/DVD
Twitter
今やっていること
メールフォーム

名前:
メール:
件名:
本文:

2007-04-11頃から
月別アーカイブ
このページのトップへ