カスタムフィールドと日時の両方を反映した並べ替えについて

190 views
Skip to first unread message

口田聖子

unread,
Feb 12, 2017, 3:28:58 AM2/12/17
to a-blog cms forum
エントリー一覧の表示に関して、「優先度」を実装してほしいという要望が多いです。

理想としては以下です。
  • カスタムフィールドで「優先度」の指定があれば、指定した数値が大きい順に一覧の先頭へ表示する
  • 指定が空(または0)であれば、表示後に日時降順で表示する
モジュールIDの「表示設定>エントリー>表示順」を「数値フィールド(降順)」にすることを試しましたが、
この順番だと以下の問題が起きてしまいます。
  • フィールドが空だと表示できない
  • 同じ値だったときには、エントリーID順(a-blog cmsのデフォルト)となってしまう

ポストインクルードを使ったとしても、並び替え順序を複数設けることはできないのではと思います。

こちら、他のCMSのように、デフォルトの並び替えを日時降順にする方法はないでしょうか…?
もし、コアの差し替えで解決できそうならそれでも構いません。

----

余談ですが、現在は以下のようにしています。
  • モジュールID:1を作り、優先度を指定したエントリーだけすべて出す
  • モジュールID:2を作り、優先度が空になっているエントリーを指定した件数出す
  • ふたつをまとめてひとつのエントリー一覧のように見せる
しかしこの方法は、優先度を指定するエントリーの数によって、エントリー一覧の件数がブレてしまうので、件数がデザインに影響する場合はJavaScriptでの足切りが必要になるという問題があります。


伊藤淳

unread,
Feb 12, 2017, 7:32:00 PM2/12/17
to a-blog cms forum
お世話になっております。

ご要望ありがとうございます。
おっしゃる通り、現状の第二ソートはentry_idになっていて、コアを書き換えないと変更できません。
近いバージョンで第二ソートを設定できるようにしたいと思います。

現状のシステムでコア書き換えで対応するとしたら、以下ファイルを編集してください。

/php/ACMS/Filter.php の entryOrder メソッドの

$SQL->addOrder('entry_id', $seq);


$SQL->addOrder('entry_datetime', 'DESC');


などに変更。

口田聖子

unread,
Feb 12, 2017, 9:51:41 PM2/12/17
to a-blog cms forum
ありがとうございます!デフォルトのソートは書き換え可能なのですね。

もちろんコアファイルは変えないに越したことはないのですが、またこのような要望があった際は検討したいと思います。
Reply all
Reply to author
Forward
0 new messages