Statistics
Drupalサイトの匿名コンテンツ閲覧統計をログに記録し表示します。匿名ユーザーを含むすべてのユーザーによる各ノードの閲覧回数をカウントします。
statistics
インストール
composer require 'drupal/statistics:^1.0'
概要
Statistics モジュールは、匿名ユーザーを含むすべてのユーザーのエンティティ閲覧回数をカウントすることで匿名アナリティクスを提供します。これは以前 Drupal コアの一部であったモジュールのコントリビュート版で、現在は Drupal 10.3 以降および 11 向けに別途メンテナンスされています。
現在、このモジュールはフルページモードでのノード閲覧のみをカウントし、累計合計と日次小計を維持しますが、履歴データは保持しません。モジュールは AJAX 経由でパフォーマンスに最適化された閲覧カウントのために専用のフロントコントローラー(statistics.php)を使用し、ページロード時間への影響を最小限に抑えます。
モジュールは「人気コンテンツ」ブロックを提供し、今日最も閲覧されたコンテンツ、全期間で最も閲覧されたコンテンツ、最近閲覧されたコンテンツを表示します。また、Drupal の Search モジュールと統合して閲覧回数を検索ランキングに反映し、Views と統合してカスタム表示用に統計データを公開します。
Features
- 匿名ユーザーを含むすべてのユーザーのコンテンツ(ノード)閲覧をカウント
- ノードごとの合計閲覧回数と日次閲覧回数を維持
- 各ノードの最新閲覧タイムスタンプを追跡
- 日別、全期間、または最近閲覧されたコンテンツを表示する「人気コンテンツ」ブロックを提供
- 適切な権限を持つユーザーに対してノードページに閲覧回数を表示
- コア Search モジュールと統合し、人気度に基づいて検索ランキングに影響
- Views モジュールと統合し、統計ベースのカスタム表示を作成可能
- Drupal 6 および Drupal 7 の統計データからのマイグレーションをサポート
- パフォーマンスに最適化された AJAX ベースの閲覧カウント用に軽量なフロントコントローラーを使用
- cron により日次閲覧回数を自動的にリセット
Use Cases
ホームページに最も人気のある記事を表示
人気コンテンツブロックを使用して、サイトで最も閲覧された記事を紹介します。コンテンツ閲覧カウントを有効にした後、サイドバーまたは注目リージョンにブロックを配置し、全期間で最も閲覧されたコンテンツアイテムの上位 5〜10 件を表示するように設定します。
トレンドコンテンツビューを作成
Views を使用して、日次閲覧回数でソートされたカスタムの「トレンド」ページまたはブロックを作成します。node_counter へのリレーションシップを追加し、daycount の降順でソートし、結果を制限して今ホットなコンテンツを表示します。
検索結果で人気コンテンツをブースト
コンテンツ閲覧カウントが有効な場合、Statistics モジュールは自動的に検索ランキングに影響を与え、頻繁に閲覧されるコンテンツが検索結果で上位に表示されるようになり、ユーザーが人気コンテンツを見つけやすくなります。
コンテンツパフォーマンスを追跡
Views を使用して、すべてのコンテンツと合計閲覧回数、日次閲覧回数、最終閲覧日を表示する管理レポートを作成します。これにより、コンテンツ編集者はどのコンテンツが訪問者に響いているかを理解できます。
レガシー Drupal サイトから統計をマイグレーション
Drupal 6 または 7 からマイグレーションする際、提供されるマイグレーション(statistics_node_counter、statistics_settings)を使用して、既存の閲覧回数データを新しいサイトに保持します。
Tips
- 人気コンテンツブロックは 'access content' 権限を持つユーザーにのみ表示され、コンテンツ閲覧カウントが有効な場合にのみ表示されます。
- トラフィックの多いサイトでは、統計表示が display_max_age 設定(デフォルト 1 時間)を尊重するため、キャッシング戦略を検討してください。
- JavaScript トラッキングは jQuery AJAX を使用し、非同期で実行されるため、ページロードパフォーマンスへの影響を避けられます。
- 統計は「full」ビューモードでフルページとして閲覧されたノードのみ追跡され、Views やその他のコンテキストで表示されるノードは追跡されません。
- モジュールは非推奨のコア Statistics モジュールをクリーンに置き換えます - Composer 経由でインストールするだけで、Drupal は自動的にコントリビュート版を使用します。
Technical Details
Admin Pages 1
/admin/config/system/statistics
サイトでコンテンツが閲覧された回数を追跡するための統計設定を構成します。
権限 2
Hooks 7
hook_node_view
フルページモードで閲覧される際にノードに統計トラッキング JavaScript ライブラリをアタッチします。
hook_node_links_alter
'view post access counter' 権限を持つユーザーに対してノードリンクに閲覧回数表示を追加します。
hook_cron
最後のリセットから 24 時間が経過した場合に日次閲覧回数をリセットします。また、検索ランキング用のカウンタースケールを計算して保存します。
hook_node_predelete
ノードが削除される際に統計データをクリーンアップします。
hook_ranking
コンテンツ閲覧カウントが有効な場合、閲覧回数を検索ランキング要素に追加します。
hook_block_alter
コンテンツ閲覧カウントが無効な場合、利用可能なブロックから 'statistics_popular_block' を削除します。
hook_views_data
カスタム表示を構築するために node_counter テーブルとそのフィールドを Views に公開します。
Troubleshooting 5
/admin/config/system/statistics で「コンテンツの閲覧をカウント」が有効になっていることを確認します。Web サーバーが statistics.php にリクエストを正しくルーティングするように設定されているか確認します(Apache の場合は .htaccess を確認するか、同等の Nginx ルールを追加します)。
ブロックは「コンテンツの閲覧をカウント」が有効な場合にのみ利用可能です。この設定を有効にしてキャッシュをクリアしてください。
/admin/people/permissions で適切なロールに「コンテンツのヒット数を表示」権限を付与してください。
モジュールディレクトリにある statistics.php フロントコントローラーに POST リクエストを正しくルーティングするためのリライトルールを Nginx 設定に追加してください。
cron が定期的に実行されていることを確認してください。モジュールの hook_cron() 実装は 24 時間ごとに日次カウントをリセットします。
Security Notes 3
- statistics.php フロントコントローラーは入力を検証し(ノード ID は正の整数である必要があります)、情報漏洩を防ぐために例外をキャッチします。
- 閲覧回数は 'view post access counter' 権限を持つユーザーにのみ表示されます。
- 統計設定への管理アクセスには 'administer statistics' 権限が必要です。