Exclude Node Title
個々のノード、コンテンツタイプ(バンドル)、表示モードごとにノードタイトルを表示から除外するオプションを提供します。
exclude_node_title
インストール
composer require 'drupal/exclude_node_title:^2.0'
composer require 'drupal/exclude_node_title:8.x-1.4'
概要
Exclude Node Titleは、サイト管理者やコンテンツ編集者がDrupalサイトのフロントエンドでノードタイトルを表示するかどうかを制御できる、シンプルながら強力なモジュールです。テンプレートファイルを変更せずに特定のコンテキストでノードタイトルを非表示にしたいという、Drupalテーマ開発における一般的なニーズに対応します。
このモジュールは2つの主要な動作モードを提供します:特定のコンテンツタイプのすべてのノードを自動的に除外するモードと、コンテンツ編集者がノード編集フォームのチェックボックスを使用してノードごとにタイトルを非表示にするかどうかを選択できるユーザー定義モードです。管理者は、どの表示モード(フルページ、ティーザー、検索結果、ノードフォームなど)でタイトルを除外するかを設定できます。
このモジュールはタイトルを非表示にする2つの方法を提供します:タイトルテキストをレンダリングから完全に削除する方法と、CSSクラス(visually-hidden)を追加してスクリーンリーダーからはアクセス可能な状態を保ちながらタイトルを非表示にする方法です。この柔軟性により、サイトビルダーはアクセシビリティとSEOの要件に最適なアプローチを選択できます。
Features
- 個々のノードまたはコンテンツタイプのすべてのノードで表示からノードタイトルを除外
- 表示モードごとにタイトル除外を設定(フルページ、ティーザー、検索結果、ノードフォーム、カスタム表示モード)
- 2つのレンダリングモード:完全なテキスト削除またはvisually-hiddenクラスを使用したCSSベースの非表示
- コンテンツ編集者向けのノード編集フォームのチェックボックスによるユーザー定義の除外
- 検索結果ページからタイトルを除外するオプション(Searchモジュールが必要)
- タイトル除外のためのパーミッションベースのアクセス制御(自分のノードまたは任意のノード)
- タイトルフィールド表示制御のためのDisplay Suite統合
- コンテンツタイプ削除時の自動クリーンアップ
- タイトル除外を伴うノードプレビューのサポート
Use Cases
カスタムヘッダーを持つランディングページ
ノードタイトルが管理目的で使用されるが、カスタムヘッダーフィールドやヒーローセクションが表示用のページタイトルを提供するランディングページを作成します。コンテンツタイプを「すべてのノード」除外モードに設定し、「フルコンテンツ」表示モードを選択します。
ビジュアルタイトルを持つポートフォリオアイテム
タイトルがフィーチャー画像の一部として、またはカスタムデザイン要素で表示されるポートフォリオやギャラリーコンテンツでは、「すべてのノード」モードを有効にして重複したタイトル表示を防ぎながら、リストページのティーザーにはタイトルを保持します。
編集者によるタイトル表示の制御
コンテンツ編集者が記事ごとにタイトルを表示するかどうかを決定できるようにします。コンテンツタイプを「ユーザー定義のノード」モードで設定し、編集者に「exclude own node title」パーミッションを付与します。ノード編集フォームにチェックボックスが表示されます。
アクセシブルな非表示タイトル
タイトルを視覚的に非表示にしながら、スクリーンリーダーとSEOのためにアクセス可能な状態を保ちたい場合は、「非表示クラス」レンダリングタイプを使用します。visually-hiddenクラスは、支援技術からはアクセス可能な状態を維持しながら、視覚ユーザーからはコンテンツを非表示にします。
検索結果のカスタマイズ
検索表示がカスタム結果フォーマットを使用する場合や、タイトルが他の表示情報と重複する場合に、検索結果からノードタイトルを非表示にします。「検索ページからノードタイトルを削除」オプションを有効にします。
ノードフォームでのタイトル非表示
表示モードで「ノードフォーム」を選択して、ノード編集フォームでのタイトル表示を非表示にします。自動タイトル生成を使用している場合や、タイトルフィールドがフォームの別の場所に移動されている場合に便利です。
Tips
- 「非表示クラス」モードを使用すると、タイトルはvisually-hiddenクラス付きでDOMに残り、完全に削除するよりもアクセシビリティとSEOに優れています。
- 「ノードフォーム」表示モードにより、編集ページでタイトルを非表示にできます。タイトルが自動生成される場合やフォームの他の場所で管理される場合に便利です。
- ユーザー定義の除外はState APIに保存され、設定には含まれないため、コンフィギュレーション管理でエクスポートされません。
- モジュールは除外されたノードページのbody要素に「exclude-node-title」クラスを追加します。これは追加のCSSターゲティングに使用できます。
- Display Suiteレイアウトでは、preprocessフックに頼るのではなく、拡張されたnode_titleフィールドを使用して適切な除外サポートを得てください。
Technical Details
Admin Pages 1
/admin/config/content/exclude-node-title
どのコンテンツタイプと表示モードでノードタイトルを表示から除外するかを設定します。検索ページの除外に関するグローバルオプションを設定し、タイトルを非表示にするレンダリング方法を選択します。
権限 3
Hooks 12
hook_preprocess_html
除外されたノードまたはその編集フォームを表示する際に、HTMLのhead titleを変更し、bodyにexclude-node-titleクラスを追加します。
hook_preprocess_page_title
設定に基づいてタイトルを非表示または削除するためのページタイトル変数を処理します。
hook_preprocess_page
フルページビューと編集フォームでタイトル除外を適用するためのページ変数を処理します。
hook_preprocess_node
表示モード設定に基づいてノードのラベル/タイトルを除外するためのノードテンプレート変数を処理します。
hook_preprocess_field
検索除外が有効な場合、検索結果からタイトルフィールドのコンテンツを削除します。
hook_preprocess_search_result
検索除外が有効な場合、検索結果変数からタイトルを削除します。
hook_form_node_form_alter
「ユーザー定義」モードのコンテンツタイプのノード編集フォームに「表示からタイトルを除外」チェックボックスを追加し、設定されている場合はタイトルフィールドを非表示にします。
hook_node_insert
除外チェックボックスがチェックされた状態で新しいノードが作成された場合、ノード除外フラグを保存します。
hook_node_update
既存のノードが保存された際にノード除外フラグを更新します。
hook_node_delete
削除されたノードを除外リストから削除します。
hook_ds_fields_info_alter
Display Suiteのnode_titleフィールドプラグインを、除外設定を尊重するモジュールの拡張バージョンでオーバーライドします。
hook_block_view_page_title_block_alter
タイトル除外が有効なノードのページタイトルブロックを非表示にします。
Troubleshooting 5
設定を保存した後、すべてのキャッシュをクリアしてください。モジュールは保存時に自動的にキャッシュをクリアしますが、手動でのキャッシュクリアが必要な場合があります。また、正しい表示モードが選択されていることを確認してください。フルページ表示の場合は、「フルコンテンツ」または「デフォルト」を選択します。
コンテンツタイプが「ユーザー定義のノード」モード(「すべてのノード」や「なし」ではなく)に設定されていることを確認してください。また、ユーザーが「exclude any node title」または「exclude own node title」パーミッションを持っていることを確認してください。
管理設定でコンテンツタイプの表示モードチェックボックスを確認してください。ViewsやDisplay Suiteからのカスタム表示モードは明示的に選択する必要があります。
コアのSearchモジュールを有効にしてください。検索除外機能にはSearchモジュールがインストールされ有効になっている必要があります。
node_titleのDSフィールド設定を確認し、「Use Exclude Node Title」が「Yes」に設定されていることを確認してください。この設定はデフォルトでyesですが、変更されている可能性があります。
Security Notes 2
- 「administer exclude node title」パーミッションはアクセスが制限されており、サイト全体の表示動作を制御するため、信頼できる管理者にのみ付与する必要があります。
- ノードタイトル除外は純粋に表示機能であり、ノードへのアクセスやセキュリティには影響しません。タイトルはAPI経由で引き続きアクセス可能であり、他のコンテキストで表示される場合があります。