HTML Title

ノードタイトルで限定的なHTMLマークアップを有効にし、イタリック、上付き文字、下付き文字、その他のインライン要素によるフォーマットをサポートします。

html_title
4,292 sites
30
drupal.org

インストール

Drupal 11, 10, 9, 8 v8.x-1.6
composer require 'drupal/html_title:8.x-1.6'

概要

HTML Titleモジュールは、Drupalコアにおけるノードタイトルがプレーンテキストに制限され、HTMLマークアップをサポートしないという制限に対処します。これは、イタリック体が必要な書籍タイトル、下付き文字や上付き文字が必要な科学表記、商標記号など、フォーマットされたタイトルが必要なコンテンツでは問題になります。

このモジュールは、設定可能なHTMLタグのセット(<em><sub><sup><b><i><strong><cite><code><bdi><wbr><br>など)をノードタイトル内で使用できるようにします。XSS脆弱性や問題のあるネスト(リンク内のリンクなど)を防ぐため、その他すべてのマークアップはフィルタリングされます。

このモジュールは、Drupalのページタイトル、パンくずリスト、Views、検索結果、ノード編集フォームとシームレスに統合され、セキュリティを維持しながらサイト全体でHTMLフォーマットが適切にレンダリングされることを保証します。

Features

  • ノードタイトルで許可するHTMLタグの設定可能なホワイトリスト
  • 許可されていないHTMLタグをフィルタリングすることによる自動XSS保護
  • ノード表示および編集ページでのHTMLレンダリングによるページタイトルサポート
  • HTMLフォーマットされたノードタイトルを表示するパンくずリスト統合
  • タイトルフィールドでHTMLをレンダリングする専用のnode_html_titleフィールドプラグインによるViews統合
  • 検索一覧でフォーマットされたタイトルを表示する検索結果統合
  • HTMLフォーマットされたテキストを表示するためのstringフィールド用フィールドフォーマッター
  • 適切なXML出力のためにHTMLタグを除去するRSSフィード統合
  • 保存後にフォーマットされたタイトルを表示するノード確認メッセージサポート
  • HTMLタイトルの多言語/翻訳サポート
  • タイトルフィールドを使用するViews設定を保持する安全なアンインストール

Use Cases

書籍と出版物のタイトル

図書館、出版社、学術サイトでは、適切なイタリック体で書籍タイトルを表示する必要があることがよくあります。例えば、「The <em>Origin of Species</em> by Charles Darwin」をノードタイトルとして入力し、サイト全体で正しく表示できます。

科学および数学表記

科学的なコンテンツでは、上付き文字や下付き文字が頻繁に必要になります。「H<sub>2</sub>O」のような化学式や「E=mc<sup>2</sup>」のような数式をノードタイトルで直接使用できます。

商標および著作権記号

ビジネスや製品サイトでは、「Acme Products<sup>™</sup>」や「Widget Pro<sup>®</sup>」のように、上付き文字を使用してコンテンツタイトルに商標記号を含めることができます。

複数行タイトル

<br>タグを使用して、コンテンツ作成者は詩のタイトルやフォーマットされた見出しなど、スタイル目的で複数行のタイトルを作成できます。

強調されたキーワード

教育的または説明的なコンテンツでは、<strong>や<em>タグを使用してタイトル内のキーワードを強調し、重要な概念に注目を集めることができます。

Tips

  • 許可するタグは最小限のセットから始め、必要に応じて追加してください。デフォルトの<br>、<sub>、<sup>は、不要なフォーマットオプションを公開することなく一般的なユースケースをカバーします。
  • モジュールは設定されたタグのみを許可することでXSSから保護しますが、セキュリティの問題や問題のあるネストを引き起こす可能性のある<script>、<style>、<a>などの潜在的に危険なタグを追加することは避けてください。
  • Viewsを使用する場合、「エンティティへのリンク」設定はHTMLタイトルで正しく機能します - リンクはフォーマットされたタイトルを適切にラップします。
  • モジュールはViewsを壊すことなく安全にアンインストールできます。インストール時にフィールドプラグインプロバイダーを「node」に更新するためです。
  • ノードタイトル以外のフィールドでは、「HTML-titleテキスト」フォーマッターを任意のstringフィールドで使用して、同じHTMLフィルタリングを適用できます。

Technical Details

Admin Pages 1
Html title設定 /admin/config/user-interface/html_title

ノードタイトルで許可するHTMLタグを設定します。許可するタグをスペース区切りで<tag>形式で入力します。指定されたタグのみがノードタイトルでHTMLとしてレンダリングされ、その他のHTMLはセキュリティのために除去されます。

権限 1
HTML Title設定を管理

HTML Titleモジュールによって提供される設定を管理することをユーザーに許可します。この権限は、タイトルで許可されるHTMLタグを設定する機能があるため、アクセスが制限されています。

Hooks 9
hook_preprocess_page_title

ノード表示および編集ページでノードタイトルのHTMLマークアップをレンダリングするためにページタイトルを前処理します

hook_preprocess_breadcrumb

ノードを参照するパンくずリストリンクでHTMLマークアップをレンダリングするためにパンくずリストを前処理します

hook_preprocess_search_result

検索一覧に表示されるノードタイトルでHTMLマークアップをレンダリングするために検索結果を前処理します

hook_preprocess_field__node__title

フィールドとして表示される際にHTMLマークアップをレンダリングするためにノードタイトルフィールドを前処理します

hook_views_data_alter

デフォルトのノードタイトルフィールドハンドラーをカスタムnode_html_titleハンドラーに置き換えるためにViewsデータを変更します

hook_views_plugins_field_alter

モジュールのアンインストール後もViewsが動作し続けるように、node_html_titleのプロバイダーを'node'に変更するためにViewsフィールドプラグインを変更します

hook_theme_registry_alter

HTML Titleの前処理関数が最後に実行され、他のテーマ実装をオーバーライドするようにテーマレジストリを変更します

hook_node_view

タイトルがノードのビルド配列に表示される際にHTMLタイトルフィルタリングを適用するためにノードビューを変更します

hook_form_node_form_alter

ノード確認メッセージをHTMLフォーマットされたタイトルに置き換えるカスタム送信ハンドラーを追加するためにノードフォームを変更します

Troubleshooting 5
HTMLタグがタイトルでレンダリングされない

/admin/config/user-interface/html_titleで目的のタグが許可タグリストに追加されているか確認してください。デフォルトでは、<br>、<sub>、<sup>のみが有効です。

RSSフィードにHTMLが表示される

これは想定された動作です。モジュールは有効なXMLを確保するためにRSS出力からHTMLタグを自動的に除去します。RSSリーダーは通常、タイトル要素のHTMLをサポートしません。

モジュール有効化後にViewsでHTMLタイトルが表示されない

モジュールを有効にした後、すべてのキャッシュをクリアしてください。Viewsデータの変更が有効になるにはキャッシュの再構築が必要です。

Ginまたは他の管理テーマでHTMLタイトルが正しく表示されない

モジュールには、前処理関数が最後に実行されるようにテーマレジストリの変更が含まれています。問題が続く場合は、テーマキャッシュをクリアしてみてください。

Layout Builderプレビューでタイトル内のHTMLが表示されない

キャッシュをクリアし、モジュールが適切に有効になっていることを確認してください。モジュールはLayout Builderをサポートしていますが、初期セットアップ後にキャッシュのクリアが必要な場合があります。

Security Notes 4
  • モジュールは、DrupalのXss::filter()関数とDOMDocument解析を組み合わせて使用し、HTMLコンテンツを安全にフィルタリングしてXSS攻撃を防ぎます。
  • 許可タグリストで明示的に設定されていないすべてのHTMLタグは、表示前にタイトルから除去されます。
  • 「administer html title settings」権限はアクセスが制限されており、タイトルでHTMLを許可することのセキュリティ上の影響を理解している信頼できる管理者にのみ付与する必要があります。
  • セキュリティの脆弱性を引き起こす可能性があるため、<script>、<iframe>、<object>、<embed>、<a>などの潜在的に危険なタグを許可タグリストに追加することは避けてください。