Rate

Node やコメントを含む Drupal コンテンツエンティティに対して、複数のウィジェットテンプレートと包括的な投票機能を備えた柔軟な投票ウィジェットを提供します。

rate
4,079 sites
75
drupal.org

インストール

Drupal 11, 10 v3.2.0
composer require 'drupal/rate:^3.2'
Drupal 9 v3.1.0
composer require 'drupal/rate:^3.1'
Drupal 8 v3.0.0
composer require 'drupal/rate:^3.0'

概要

Rate モジュールは、Drupal サイト向けの包括的な投票・評価システムを提供し、VotingAPI を豊富な設定可能ウィジェットで拡張します。管理者は異なるビジュアルスタイルで複数の投票ウィジェットを作成し、任意のコンテンツエンティティタイプやコメントタイプに添付できます。

このモジュールは7つの組み込みウィジェットテンプレートをサポートしています:Custom(完全カスタマイズ可能)、Fivestar(5つ星評価)、Thumbs Up(いいね)、Thumbs Up/Down(いいね/よくないね)、Number Up/Down(数値増減)、Emotion(funny/mad/angry などの感情リアクション)、Yes/No 投票。各ウィジェットはカスタムオプション、ラベル、CSS クラス、結果表示設定で構成できます。

投票はシームレスなユーザー体験のために AJAX 経由でのみ実行されます。モジュールにはユーザーエージェントパターン、IP ベースの閾値、BotScout.com API 統合を使用した高度なボット検出メカニズムが含まれています。投票ロールオーバー設定は、匿名ユーザーと認証済みユーザーで別々の設定により、ユーザーが投票を変更できる頻度を制御します。

投票期限機能により、管理者はコンテンツタイプに日付フィールドを追加して特定の日付で投票を締め切ることができます。モジュールは詳細な投票内訳を表示する Node の投票結果タブを提供します。完全な Views 統合により、柔軟な表示オプションで任意のビューに rate ウィジェットを表示できます。

Features

  • 複数のウィジェットテンプレート:Custom、Fivestar、Thumbs Up、Thumbs Up/Down、Number Up/Down、Emotion、Yes/No
  • 任意のコンテンツエンティティタイプに単一または複数の rate ウィジェットを添付可能
  • すべてのコメントタイプに対するコメント投票サポート
  • シームレスなユーザー体験のための AJAX 専用投票
  • 同じオプションを再度クリックして投票の取り消し/キャンセルが可能
  • ユーザーエージェントパターン、IP 閾値、BotScout.com API によるボット検出
  • 匿名ユーザーと認証済みユーザー向けの投票ロールオーバー設定
  • エンティティへの自動フィールド作成による投票期限機能
  • 詳細な投票内訳を表示する Node の投票結果タブ
  • Rate Widget フィールドプラグインによる Views 統合
  • カスタマイズ可能なウィジェットラベル、説明、結果サマリー
  • ラベル(インライン/上部/非表示)、説明、結果の位置制御
  • 投票なしで表示のみの読み取り専用ウィジェットモード
  • Drupal 7 Rate モジュールからの移行サポート
  • ウィジェットごとのカスタム投票結果関数(平均、カウント、合計)
  • エンティティタイプとバンドルごとの動的パーミッション生成

Use Cases

5つ星システムによる記事評価

記事コンテンツタイプに5つ星評価ウィジェットを追加します。Fivestar ウィジェットを作成し、エンティティで「Article」を選択し、平均評価を表示するように表示を構成し、Article の「表示管理」で rate ウィジェットを有効にします。ユーザーは記事を1〜5つ星で評価し、コミュニティの平均を確認できます。

コメント投票(いいね/よくないね)

Thumbs Up/Down でコメントへの投票を有効にします。Thumbs Up/Down ウィジェットを作成し、目的のコンテンツタイプの「コメント」列にチェックを入れ、「article の node type の comment_field に投票可能」の適切な権限を設定します。コメントには投票数付きのいいね/よくないねボタンが表示されます。

投票スタイルの Yes/No 投票

意思決定コンテンツ用のシンプルな Yes/No 投票ウィジェットを作成します。Yes/No テンプレートを使用し、カスタムコンテンツタイプで有効にし、ユーザー投票ではなくオプションのカウントを表示するように構成します。コミュニティ投票やフィードバック収集に最適です。

期限付き投票コンテスト

期限付きの投票コンテストを実施します。「投票期限を使用」を有効にしたウィジェットを作成します。コンテンツを編集する際に期限日を設定します。期限が過ぎると、ウィジェットは自動的に読み取り専用になり、最終結果が保持されます。

感情リアクション(Facebook のような)

ソーシャルメディアに似たリアクションボタンを追加します。Emotion テンプレートを使用するか、「Love」「Haha」「Wow」「Sad」「Angry」などのオプションでカスタムウィジェットを作成します。各オプションのカウントを表示するように構成します。

Views での商品レビュー

商品リストビューに rate ウィジェットを表示します。ビューに Rate Widget フィールドを追加し、エンティティ ID を含むフィールドを選択し、フルウィジェット、読み取り専用、またはサマリーのみを表示するかを選択します。コンパクトなビューリスト用に必要に応じて表示オプションをオーバーライドします。

Tips

  • ロールオーバーウィンドウに「VotingAPI 設定」を使用して、中央の VotingAPI 構成を通じてすべてのウィジェットで一貫した投票ルールを維持します。
  • ウィジェットタイプやコンテンツタイプごとに結果表示をカスタマイズするために、rate-widgets-summary 用のテーマ候補を作成します(例:rate-widgets-summary--fivestar--article.html.twig)。
  • 高トラフィックサイトでは、投票操作の試みをより迅速に検出するために、ボット検出閾値を 10/50 に下げてください。
  • hook_rate_can_vote() フックを使用して、コンテンツ作成者であること、グループメンバーシップ、その他のビジネスロジックなど、カスタム投票制限を実装します。
  • Views でウィジェットを表示する場合、VotingAPI の結果へのリレーションシップを使用して、投票合計や平均によるソートとフィルタリングを有効にします。
  • 投票イベントの監査証跡が不要な場合は、パフォーマンス向上のために本番環境でログ記録を無効にしてください。

Technical Details

Admin Pages 6
Rate 設定 /admin/config/search/votingapi/rate

ボット検出閾値と BotScout.com API 統合を含むグローバル Rate モジュール設定を構成します。このページでは、投票操作を防ぐための自動ボットブロックを管理者が設定できます。

Rate ウィジェット /admin/structure/rate_widgets

システムで定義されたすべての rate ウィジェットを表示・管理します。すべてのウィジェットをマシン名、テンプレートとともにリスト表示し、各ウィジェットの編集または削除へのリンクを提供します。

rate ウィジェットを追加 /admin/structure/rate/add

テンプレートを選択し、すべての投票オプション、エンティティ割り当て、表示設定、結果表示設定を構成して新しい rate ウィジェットを作成します。

rate ウィジェットを編集 /admin/structure/rate/{rate_widget}/edit

既存の rate ウィジェットのオプション、エンティティ割り当て、表示設定、結果設定を含む構成を変更します。

rate ウィジェットテンプレートを変更 /admin/structure/rate/{rate_widget}/template

既存の rate ウィジェットのテンプレートタイプを変更します。警告:これにより現在のオプションと値タイプの設定が上書きされます。

Rate 投票結果 /node/{node}/node-rating

オプションごとの投票数と合計、および Views ベースの結果リストを含む、特定の Node の詳細な投票結果を表示します。rate ウィジェットが添付された Node でのみ表示されます。

権限 4
Rate オプションを管理

rate ウィジェットの作成、編集、削除を含む rate モジュールの管理オプションを管理します。

rate 結果ページを表示

詳細な投票統計と結果を表示する Node タブにアクセスします。

{bundle} の {entity_type} に投票可能

rate ウィジェットが添付された各エンティティタイプとバンドルに対して生成される動的パーミッション。例:「article の node type に投票可能」。

{bundle} の {entity_type} の {comment_field} に投票可能

コメントへの投票用の動的パーミッション。コメント投票が有効なエンティティタイプの各コメントフィールドに対して生成されます。

Hooks 5
hook_rate_vote_data_alter

投票がデータベースに作成される前に投票データ配列を変更します。エンティティタイプ、バンドル、値タイプ、カスタム投票データ列の変更が可能です。

hook_rate_widget_options_alter

rate ウィジェットがレンダリングされる前に、オプション(値、ラベル、クラス)をオーバーライドします。rate フォームが生成される前に呼び出されます。

hook_rate_value_column

rate 値を取得するための代替データベース列を割り当てます。デフォルトでは、投票は 'value' 列に保存されますが、カスタムモジュールで異なる列を指定できます。

hook_rate_templates

rate ウィジェット用の追加テンプレートを定義または既存のテンプレートを変更します。テンプレートは値タイプ、オプション、カスタマイズ可能性、翻訳設定を指定します。

hook_rate_can_vote

ユーザーが投票できるかどうかを判断するためのカスタムチェックを提供します。標準的な権限を超えた追加の投票制限をモジュールで実装できます。

Troubleshooting 6
rate ウィジェットがコンテンツに表示されない

以下を確認してください:1) ウィジェット構成で正しいエンティティタイプとバンドルに対して rate ウィジェットが有効になっている、2) そのコンテンツタイプの「表示管理」で rate ウィジェット疑似フィールドが有効になっている、3) コンテンツがプレビューモードではない(ウィジェットは新規の未保存コンテンツではレンダリングされません)。

表示アクセス権があるにもかかわらずユーザーが投票できない

/admin/people/permissions で、ユーザーに動的投票権限「[entity_type] type の [bundle] に投票可能」があることを確認してください。これらの権限はウィジェットがエンティティタイプに割り当てられると自動的に生成されます。

投票が記録されない

ユーザーがボットとして検出されていないか確認してください。/admin/config/search/votingapi/rate でボット検出閾値を確認してください。また、ユーザーが投票を変更できるようにしたい場合、投票ロールオーバー設定が「なし」に設定されていないことを確認してください。

期限日後にウィジェットが無効として表示される

これは「投票期限を使用」が有効で期限が過ぎた場合の予期される動作です。投票を再度有効にするには、コンテンツを編集して Rate 投票期限フィールドの値を変更または削除してください。

FontAwesome アイコンが表示されない

Rate 設定で「FontAwesome を無効化」がチェックされていないことを確認してください。テーマが独自の FontAwesome を提供している場合は、競合を避けるためにその設定を有効にしてテーマのアイコンに依存する必要があるかもしれません。

Drupal 7 Rate からの移行でウィジェットがインポートされない

まず d7_rate_widgets 移行を実行してウィジェット構成をインポートし、次に d7_vote 移行を実行して実際の投票をインポートしてください。VotingAPI の移行も実行されていることを確認してください。

Security Notes 4
  • 「Rate オプションを管理」権限は、すべてのユーザーに影響するウィジェットの作成を許可するため、信頼できる管理者ロールにのみ割り当てる必要があります。
  • ボット検出は自動投票操作を防止するのに役立ちますが、完璧ではありません。重要な投票シナリオでは追加の対策を検討してください。
  • BotScout.com API キーは機密情報として保持する必要があります。キーは検証されますが、BotScout API への HTTP 経由で送信されます。
  • 匿名アクセス可能なコンテンツの rate ウィジェットは、Cookie をクリアしたり異なるブラウザを使用したりするユーザーによる投票操作の対象となる可能性があります。