Hatena::ブログ(Diary)

ウェブ屋のCMS→modxヒキダス流(備忘録)

2009-05-17

Dittoのタギング(tagging)をフィルター代わりに使う

Dittoで条件を絞り込む際、通常はフィルターを使います。

フィルターは複数指定することで、それぞれをAND条件とし、さらに絞り込むことができます。

参考)http://d.hatena.ne.jp/hikidas_ikeda/20090306/1236350741

もう一つ、絞り込みに使えるものとして、タギングtagging)があります。タギングの場合は、複数指定して、それぞれをOR条件とすることもできます。(ちなみに、フィルターとタギングを両方使った場合、フィルターとタギングの関係はAND条件になります)

例として、テンプレート変数(tagword)にタグとなるキーワードを「,」で区切って入力していて、キーワードMODx」または「CMS」がここに入力されているものだけに絞り込んで一覧表示するケースを想定します。

なお、ページアドレスは「search_tag.html」とします。

キーワードを、直接Dittoスニペットパラメータで指定する。

[!Ditto? &id=`tag_search` &extenders=`tagging` &tagData=`tagword` &tagDelimiter=`,` &tags=`MODx,CMS` &language=`japanese-utf8`!]

上記のようにDittoパラメータキーワードを指定するとキーワード毎にページが必要になりますので、次にURLキーワードを指定するようにします。

キーワードを、URLで指定する。

ここでは、Dittoのidパラメータが「tag_search」ですので、「tags」を「tag_search_tags」として、アドレスは以下のようにします。

search_tag.html?tag_search_tags=MODx,CMS

(もしDittoにidパラメータをつけていなければ「tags」でOKです)

この場合、Dittoスニペットパラメータに「tags」は不要です。

[!Ditto? &id=`tag_search` &extenders=`tagging` &tagData=`tagword` &tagDelimiter=`,` &language=`japanese-utf8`!]

※日本語のキーワード等を使う場合、UTF-8URLエンコードして指定します。(「UTF-8」「URL」「エンコード」等で検索するとエンコードできる無償のサービスが多数みつかると思います)


■さらに、使用するフィールドまで、URLで指定する。

Dittoの「request」を使って、「tagData」パラメータを指定します。

例として、説明(ドキュメント変数「description」)内のキーワードを使うように変更します。

アドレス

search_tag.html?ditto_tag_search_tagData=description&tag_search_tags=MODx,CMS

Dittoスニペット

[!Ditto? &id=`tag_search` &extenders=`request,tagging` &tagData=`tagword` &tagDelimiter=`,` &language=`japanese-utf8`!]

★注意★

Dittoの「extenders」パラメータの指定は、順番に意味があります。

例えば、上記で「&extenders=`tagging,request`」とすると、「tagging」が先に実行されますので、URLでの「tagData」指定は無効になります。

(ちなみに「tags」だけは特別で、元々URLで指定できるようになっています)

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/hikidas_ikeda/20090517/1242521866