店舗名称や商品名称など、意外と50音順に並べ替えてみたい事が、時々あります。
今回は、Dittoのfilter機能を使って、50音順にリスト化するスニペットを作ります。
基本スニペット
[!Ditto? &parents=`指定id` &tpl=`指定テンプレート` &showInMenuOnly=`1` &filter=`ふりがな,あ,6|ふりがな,か,5` &orderBy=`ふりがな ASC`!]
解説
parents
親ドキュメントの指定
tpl
表示テンプレートの指定
showInMenuOnly
メニュー表示がされているモノのみ選択。
filter
テンプレート変数:ふりがなの、【あ】という言葉以上を選び、or ふりがなの【か】までを取得しなさい。※
orderBy
取得たデータのテンプレート変数:ふりがなを、【あ】から順番に表示しなさい。
filterパラメーターの書き方の詳細は、下記参照でお願いします。
http://www.modx.liolion.net/resource/ditto2.html
説明
指定した親ID以下のリソースページの【ふりがな】というテンプレート変数に入力された、テキストを抜き出し、そのテキストを、あ~おの順番に並べ変えて、表示しなさい。
と言った内容です。
このスニペットのキモは、やはりfilterパラメーターの扱いです。
今回の設定で言えば、【あ】よりも大きい。つまり50音で言う【あ】以降の文字全てを選びなさい。という条件付けがされています。しかし、このままでは50音全ての文字が取得されてしまうので、どこかで取得を止めなければなりません。そこでもう一つのパラメーターを設定します。
filterパラメーターは、複数条件の指定が出来ます。各条件の関連はORです。
通常で考えれば「AまたはB」という考え方になりますが、入力設定のmodeで抽出条件の設定を変えることで、取得を止めます。
今回は、【あ行】の取得が目的ですので、【お】までの文字列を取得できれば良いですから、下記のようなパラメーターを設定します。
【ふりがな,か,5】
これは、【ふりがな】から【か】以下※の文字を取得しなさい。となります。
つまり、「あ~お」までの値を抜き出した事になります。
これで、あ行の取得設定が出来たことになります。
同様のやり方で、か行以降のスニペットを作れば、50音全ての取得設定が可能です。
さて、カンの良い人はお気づきかと思いますが、この条件だと50音にしか対応していません。つまりアルファベットや数字には対応していない状態です。
アルファベットや数字の場合も同様のスニペット設定で取得が可能ですので、アルファベット用や数字用といったスニペットを用意すれば、それぞれのリスト制作が可能です。
今回あらためて、Dittoの強力なデータ抽出を実感しましたが、奥が深いというよりも、色々と実験してみて、初めて判ることがまだまだあるなぁと感心しました。と同時に、MODxは本当に「決まった型のない、カスタマイズ思考の強いCMS」だとあらためて思いました。
※本来はあ行であれば、あ~おなので、取得終了は【お】で良いのでは?と思われがちですが、
【お】で終了設定をすると、【お】が含まれない状態になるので、一つ先の【か】までを取得条件としています。