特定のコンテンツタイプのコメントの表示順を投稿順ではなく承認順にしたい

Events happening in the community are now at Drupal community events on www.drupal.org.
bzj00220's picture

特定のコンテンツタイプのコメントの表示順を投稿順ではなく承認順にしたい

コメントの表示順は投稿された順番になっています。

私の運営しているサイトではコメント投稿→私が承認→掲載という流れになっています。

ただ、事情があってあるコンテンツタイプでは
コメントが投稿された順番に承認するわけではないので、
承認された順番と表示される順番が違うことがあります。

コメントの表示順を投稿された順番ではなくて、承認された順番にすることはできるのでしょうか?

Comments

hgoto's picture

コアやコントリビュートモジュールでお望みの要件をそのまま満たすようなものはないようですので、他の何らかの形で実現することになるかと思います。

アプローチとしては大きく 2 通りの方向性があるでしょうか。

  1. カスタムモジュールを書く
  2. コントリビュートモジュールを組み合わせる

1 の場合は次の 3 つが必要かと思います。

  • コメントに承認日時を保持するフィールド (A) を追加
  • コメントが承認されたときに A に現在の日時をセットする
  • コメント一覧の表示順を A の順でソート

実装が必要なフックは hook_comment_presave() hook_query_comment_filter_alter() あたりかと思います。

2 の場合は次の 2 つが必要かと思います。

  • コメントが承認されたときに作成日時を現在の日時で上書き
  • コメント一覧の表示順を作成日順でソート

こちらは RulesComment goodness でできそうです。ただし、作成日時が承認日時で上書きされてしまうと困る場合には 2 の方法は使えないかな・・・と思います。

ご参考になさってください。

以下参考リンクです。こちらもよろしければ。

ありがとうございました

bzj00220's picture

Rulesで

コメントが承認されたときに作成日時を現在の日時で上書き

が可能なら、私の目的はそれだけで果たせそうです。

ただし、作成日時が承認日時で上書きされてしまうと困る場合には 2 の方法は使えないかな・・・と思います。

できれば作成日時と承認日時はそれぞれに保管しておきたい気がしますが、
私の能力ではカスタムモジュールは無理ですので2の方向で試してみます。

ヒントを与えていただいてありがとうございました。

bzj00220's picture

Rulesで承認した際にコメントの作成日時を現在の時刻を上書きすることは可能でした。

ところがコメントの表示されている順番はコメントの作成日時とは関係ないみたいで表示の順番は変わりませんでした。

Comment goodnessも試してみました。
こちらはコメントを新しい順や古い順に並べ替えできるのですが、
このモジュールもコメントの作成日時とは関係がないみたいです。

自分では無理そうなので外注さんにお願いすることを検討しております。

Comment

bzj00220's picture

Comment goodnessはどうやらコメントIDで並べ替えするためのモジュールのようです。

試しにComment sort by createdというモジュールを入れてみたら、作成日時で並べ替えることができるようになりました。

解決しました。
ありがとうございました。

bzj00220

hgoto's picture

bzj00220 さん、ご丁寧に状況ご共有くださりありがとうございます。

そうでしたか。 Comment goodness について認識が間違っており大変失礼いたしました。。。コメント ID で並べる部分は Drupal のコアの挙動のようですので、 Comment goodness はそれを降順に並べ替えられるだけだったのですね。

ともあれ、外注さんも検討されたとのことですが無事に解決まで行かれたようで何よりです!!

日本 コミュニティ: Drupal Japan User Group

Group organizers

Group categories

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: