最近の記事

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

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 黒神 さよなら絶望先生 Firefox ユニゾンシフト PSP WORKING´!! Little_Lovers_2nd YouTube みつどもえ sola ポリフォニカ クレイモア Drupal ヱヴァンゲリヲン ライトノベル 京アニ ゼロの使い魔 侵略!イカ娘 DS ベルセルク もってけ!セーラーふく スケッチブック ロロナのアトリエ カイジ 長門有希 CD 君が主で執事が俺で しゅごキャラ! ねんどろいど 破天荒遊戯 電撃文庫 涼宮ハルヒ ニュース 声優 坂井泉水 バイク 撲殺天使ドクロちゃん ユーチューブ どきどき魔女神判 歌詞 字幕.in 字幕 地球へ 絶対可憐チルドレン 小岩井フローラ ご愁傷さま二ノ宮くん ef プリズム・アーク レンタルマギカ ブルードロップ バンブーブレード 京都アニメーション スカイガールズ 色彩 こどものじかん ドラゴノーツ RD潜脳調査室 水樹奈々 生徒会の一存  聖地 Google日本語入力 Newtype バカとテストと召喚獣 ゴンゾ 科学 Lightbox Web制作 JavaScript Slimbox jQuery 青い花 ヒャッコ 聖地巡礼 オオカミさんと七人の仲間たち フラクタル お兄ちゃんのことなんかぜんぜん好きじゃないんだから 夢喰いメリー 日記 ロウきゅーぶ! 神様ドォルズ 森田さんは無口 ヨスガノソラ ミルキィホームズ アマガミSS 祝福のカンパネラ 学園黙示録 あそびにいくヨ! 神のみぞ知るセカイ 生徒会役員共 けいおん Opera PV PC Movable_Type 僕は友達が少ない カドゥン firefox ロボテック H2O FC2ブログ ゴルゴ13 windows_xp ブログ検索 ダ・カーポII 灼眼のシャナII DokuWiki CLANNAD ヴィンランド・サガ 薬師寺涼子 まりあ†ほりっく ホワイトアルバム アルバム 明日のよいち! アニソン RIDEBACK ラノベ 同人誌 鉄のラインバレル アニメディア スレイヤーズ アニメージュ イラスト とらドラ! ジブリ インターネット 

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

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

2007-04-11頃から
月別アーカイブ
このページのトップへ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。