Node read time
単語数と設定可能な1分あたりの単語数に基づいて、ノードコンテンツの推定読了時間を表示します。
node_read_time
インストール
composer require 'drupal/node_read_time:8.x-1.15'
概要
Node Read Time モジュールは、Drupal ノードの読了時間推定機能を提供します。コンテンツを読むのにかかる推定時間を計算してユーザーに表示するため、ブログ、ニュースサイト、およびコンテンツ重視のウェブサイトに最適です。
このモジュールは、通常のテキストフィールド、長文テキスト、要約付きテキスト、さらには Paragraphs やカスタムブロックなどの Entity Reference Revision フィールドのコンテンツを含む、すべてのテキストベースのフィールドを分析します。読了時間はコンテンツタイプごとに有効化でき、異なる読者の読書速度に対応するためにカスタマイズ可能な1分あたりの単語数の計算をサポートしています。
読了時間は複数の形式で表示できます:分のみ、分と秒、または短いコンテンツに対して「1分」と表示するスマート形式などがあります。さらに、必要に応じてコンテンツ編集者が計算された読了時間を手動でオーバーライドすることもできます。
Features
- 設定可能な1分あたりの単語数に基づいて、ノードコンテンツの推定読了時間を計算・表示
- コンテンツタイプごとに有効化をサポートし、どのコンテンツタイプで読了時間を表示するかを細かく制御可能
- text、text_long、text_with_summary、string_long、entity_reference_revisions(Paragraphs、カスタムブロック)など複数のフィールドタイプを分析
- 4つの時間表示形式を提供:数値のみ、分のみ、分と秒、スマート表示
- コンテンツ編集者がカスタム読了時間を設定できる手動オーバーライドフィールドを含む
- Views モジュールと統合し、カスタム読了時間表示を構築するためのカスタムフィールドハンドラーを提供
- Manage Display インターフェースで配置可能な追加表示フィールドとして読了時間を追加
- node_read_time プロパティ経由でプログラムからアクセス可能な計算済みエンティティフィールドを提供
Use Cases
読了時間表示付きブログ
Article コンテンツタイプで読了時間を有効にして、各ブログ投稿を読むのにかかる時間を読者に表示します。一般的な読者向けに 225 WPM を設定するか、より慎重に読む必要がある技術的なコンテンツ向けに調整します。Manage Display を使用して、記事タイトルや公開日の近くに読了時間フィールドを配置します。
クイックスキャンインジケーター付きニュースサイト
ニュース記事で「Minute and Second」形式を使用して、読者に正確な時間見積もりを提供します。これにより、限られた時間内にどの記事を読むか決定するのに役立ちます。Views で設定して、ティーザーリストに読了時間を表示します。
カスタム読書速度の教育コンテンツ
技術文書や教育資料の場合、より慎重に読むことを考慮して1分あたりの単語数を 180-200 に下げます。図やコード例を理解するために追加時間が必要な複雑な記事にはオーバーライドフィールドを使用します。
埋め込みメディア付きコンテンツ
動画やインタラクティブ要素を含む記事の場合、オーバーライドフィールドを使用して計算された読了時間に追加時間を加えます。コンテンツ編集者は、埋め込み動画の視聴時間を考慮した、より正確な総エンゲージメント時間を手動で設定できます。
Views ベースのコンテンツリスト
読了時間をソート可能なフィールドとして含む記事のカスタム View を作成します。これにより、訪問者は読了時間でコンテンツをフィルタリングまたはソートでき、短い休憩時間には短い記事を、じっくり読む時間には長い記事を選択できます。
Tips
- 平均的な成人は1分あたり200〜250語を読みます。出発点として 225 WPM を使用し、読者の読解レベルとコンテンツの複雑さに基づいて調整してください。
- 技術的またはコードが多いコンテンツの場合、より慎重に読むことを考慮して WPM を 150-180 に下げることを検討してください。
- 追加のエンゲージメント時間が必要な動画やインタラクティブコンポーネントなどの非テキスト要素を含むコンテンツにはオーバーライドフィールドを使用します。
- 読了時間は {{ content.reading_time }} を使用して Twig テンプレートでレンダリングでき、より正確な配置制御が可能です。
- Paragraphs を使用する場合、すべてのネストされたテキストコンテンツが自動的に読了時間の計算に含まれます。
- モジュールは正確な見積もりのために HTML タグを除去し、単語カウントの計算から iframe および script タグを除外します。
Technical Details
Admin Pages 1
/admin/config/content/reading-time
1分あたりの単語数、時間表示形式、特定のコンテンツタイプでの読了時間有効化など、読了時間計算の設定を行います。
権限 1
Hooks 6
hook_entity_extra_field_info
ノードエンティティの追加表示フィールドとして 'reading_time' を登録します。これにより、読了時間が Manage Display インターフェースに表示されるようになります。
hook_node_view
ノードが表示されるときに読了時間をレンダリングします。コンテンツタイプで読了時間が有効かどうかをチェックし、オーバーライド値を使用するか、サービスを使用して読了時間を計算します。
hook_theme
関連するテンプレートと変数を持つ 'reading_time' テーマフックを登録します。
hook_views_data_alter
Views で読了時間を表示するためのカスタム Views フィールドハンドラーを追加します。
hook_entity_base_field_info
ノードエンティティに 'node_read_time_override' ベースフィールドを追加し、コンテンツ編集者が読了時間の値を手動で設定できるようにします。
hook_entity_base_field_info_alter
ノードエンティティに計算済みの 'node_read_time' フィールドを追加し、計算された読了時間へのプログラムによるアクセスを提供します。
Troubleshooting 4
まず /admin/config/content/reading-time でコンテンツタイプの読了時間が有効になっていることを確認します。次に Structure > Content types > [タイプ] > Manage display に移動し、'Reading time' フィールドが表示されている(非表示ではない)ことと、希望する位置に配置されていることを確認します。
コンテンツがサポートされているフィールドタイプ(text、text_long、text_with_summary、string_long)を使用していることを確認します。カスタムフィールドタイプや特定のフォーマット済みテキストのコンテンツは収集されない場合があります。また、Paragraphs フィールドが entity_reference_revisions タイプを使用していることを確認します。
/admin/people/permissions でユーザーロールに 'Administer reading time' 権限があることを確認します。サイト管理者はモジュール更新時にこの権限を自動的に受け取ります。
オーバーライドフィールドを使用している場合、値が期待される形式であることを確認します。計算値については、Views フィールドハンドラーが現在の設定を使用するように Drupal キャッシュをクリアします。