Site Settings and Labels
サイト設定に影響を与えずにクライアントが編集可能な、サイト全体の設定とラベルを管理するためのコンテンツエンティティシステムを提供します。
site_settings
インストール
composer require 'drupal/site_settings:^2.0'
概要
Site Settings and Labelsモジュールは、サイト設定を変更せずにサイト全体の設定を管理するための堅牢なコンテンツベースのシステムを提供します。標準的な設定エンティティとは異なり、サイト設定はコンテンツとして扱われるため、技術に詳しくないユーザーでも管理でき、構造はバージョン管理下に置くことができます。
このモジュールは3つのエンティティタイプを導入します:Site Setting Entity(実際の値を格納するコンテンツエンティティ)、Site Setting Entity Type(利用可能な設定タイプ/バンドルを定義する設定エンティティ)、Site Setting Group Entity Type(設定をグループに整理するための設定エンティティ)。管理者は任意のDrupalフィールドタイプでカスタム設定タイプを定義し、複数エントリを許可するかどうかを指定し、設定を論理的なグループに整理できます。
サイト設定は、Twig関数を使用してテンプレート内で、ローダープラグインを介してコード内で、Tokenが利用可能な場所であればどこでもアクセスできます。モジュールは2つのローダー戦略を提供します:Full Site Settings Loader(推奨)は表示設定を尊重した完全なエンティティオブジェクトを返し、Flattened Site Settings Loader(レガシー)はクイックアクセス用の簡略化された配列を返します。
主な機能には、翻訳をサポートする多言語コンテンツ対応、完全なリビジョン履歴、設定の一括複製、設定を表示するための2つのBlockプラグイン、デフォルトの管理用ビューを備えたViews統合、タイプ別権限用のオプションサブモジュールを含む詳細な権限管理があります。
Features
- フィールド追加可能なバンドルを持つサイト設定用カスタムコンテンツエンティティシステム
- 設定を論理的に整理するための柔軟なグループ化システム(例:「フッター設定」「ソーシャルリンク」)
- 複数エントリのサポート - 設定タイプが単一または複数の値を許可するかを選択可能
- テンプレートで設定をレンダリングするための6つのTwig関数:site_setting()、site_settings_by_name()、all_site_settings()、site_settings_by_group()、site_setting_field()、site_setting_entity_by_name()
- Tokenが使用可能な場所(メール、Blockなど)で設定を使用するためのToken統合
- 2つのローダープラグイン戦略:Full(推奨、エンティティベース)とFlattened(レガシー、配列ベース)
- 完全な翻訳機能を備えた多言語サポート
- リバートと削除機能を備えたリビジョン履歴
- 複数の類似した設定を素早く作成するための一括複製機能
- 2つのBlockプラグイン:Simple Site Settings BlockとRendered Site Settings Block
- デフォルトの管理用ビューとカスタムエリアプラグインを備えたViews統合
- すべてのTwigテンプレートへの設定の自動読み込み(設定可能)
- オプションサブモジュールによるタイプ別権限
- カスタムアイコンを備えたNavigationモジュール統合
- よりクリーンな管理画面表示のためのシンプルなティーザーモード
Use Cases
ソーシャルメディアリンク
「Footer」グループに複数エントリを有効にした「social_links」設定タイプを作成します。リンクフィールドとアイコンフィールドを追加します。コンテンツ編集者は開発者の関与なしにソーシャルネットワークを追加/削除できます。テーマでは:{{ site_settings_by_name('social_links') }}
フッター著作権テキスト
テキストフィールドを持つ「footer_copyright」設定タイプを作成します。単一の設定に著作権表示を保存します。フッターテンプレートで{{ site_settings_by_name('footer_copyright') }}を使用します。
連絡先情報
「Contact」グループに電話番号、メール、住所用の設定タイプを作成します。{{ site_settings_by_group('contact') }}で一度にすべてを読み込むか、名前で個別に読み込みます。
ホームページヒーロー設定
画像、タイトル、サブタイトル、CTAリンクフィールドを持つ「hero_settings」タイプを作成します。編集者はテンプレートに触れずにホームページのヒーローを更新できます。
メールテンプレート変数
メールコンテンツ用の設定(例:「welcome_email_intro」「signature」)を作成し、メールテンプレートで[site_settings:welcome_email_intro]のようにTokenを使用します。
機能フラグ
機能トグル用のブール設定を作成します。コードでsite_setting_entity_by_name('feature_name')を使用してエンティティを取得し、プログラムでフィールド値をチェックします。
多言語ラベル
言語ごとに異なるコンテンツが必要だがインターフェース翻訳には適さないUIラベル用の翻訳可能な設定タイプを作成します。
Tips
- より良いDrupal統合と適切なキャッシュ処理のためにFull Site Settings Loader(デフォルト)を使用してください
- パフォーマンス向上のために設定タイプ間で既存のフィールドを再利用してください - モジュールはセットアップ中にこれについて警告します
- 多くの設定がある場合は、よりクリーンな管理画面表示のために「simple_summary」を有効にしてください
- テンプレートでグループベースの読み込みを可能にするために、論理的にグループを使用してください(Footer、Header、Contactなど)
- 複数のフィールドを持つ複雑な設定には、シンプルなブロックを使用する代わりにカスタムビューモード表示を作成してください
- site_setting_entity_by_name() Twig関数はテンプレートでプログラムによるフィールドアクセス用のエンティティオブジェクトを返します
- 設定タイプの設定をバージョン管理にエクスポートしてください - コンテンツはデータベースに残ります
- 異なる編集者が異なる設定タイプを管理する場合は、タイプ別権限サブモジュールを検討してください
- メニュー変更を反映させるには「show_groups_in_menu」設定を変更した後にキャッシュをクリアしてください
Technical Details
Admin Pages 7
/admin/content/site-settings
すべてのサイト設定エンティティの管理用一覧。ID、グループ、タイプ、説明、レンダリングされた値(Teaserビューモードまたはシンプルなサマリーを使用)、操作を含むテーブルビューを表示します。グループと言語のフィルターを含みます。ヘッダーに「まだ作成されていない」設定をクイック追加ボタンとともに表示します。
/admin/config/site-settings/config
ローダープラグインの選択、自動読み込み動作、管理画面表示オプションなど、Site Settingsモジュールの動作を設定します。
/admin/structure/site-settings
Site Settingsの構造を管理するための概要ページ。設定タイプとグループを管理するためのリンクを提供します。
/admin/structure/site_setting_entity_type
利用可能なSite Settingタイプ(バンドル)を管理します。各タイプは独自のフィールド、グループ割り当て、複数エントリオプションを持つ設定の種類を定義します。タイプはエクスポートしてバージョン管理できる設定エンティティです。
/admin/structure/site_setting_entity_type/add
ラベル、グループ割り当て、複数エントリオプションを持つ新しいサイト設定タイプを作成します。
/admin/structure/site_setting_entity_type/{setting}/replicate
既存のサイト設定タイプを一括複製して、異なるマシン名、ラベル、グループ割り当てを持つ複数の類似した設定タイプを作成します。ReplicateおよびField Toolsモジュールが必要です。
/admin/structure/site_setting_group_entity_types
Site Settingsグループエンティティを管理します。グループにより、サイト構築者は複数のサイト設定をまとめて整理でき(例:「フッター設定」「ソーシャルリンク」)、テーマ構築者はグループ内のすべての設定を一度に読み込むことができます。
権限 10
Hooks 2
hook_site_settings_no_setting_token_alter
設定が定義されていない場合にTokenが返す文字列を上書きします。デフォルトの「Setting not found」メッセージのカスタマイズを可能にします。
hook_site_settings_loader_plugin_info_alter
サイト設定ローダープラグインの定義を変更します。モジュールがローダープラグイン情報を修正できるようにします。