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-8でURLエンコードして指定します。(「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で指定できるようになっています)