Domain Config ============= This module provides a per-domain configuration option so that, for each domain, you can change configuration items of any type, such as settings like the site name. By default, these overrides are also language-aware. An override may exist per domain, or per-language per domain, based on the prefixes used in the config file. Usage ===== Currently, there is no user interface for changing settings, but you can load in new files that contain configuration per domain. The pattern for override files is `domain.config.DOMAIN_MACHINE_NAME.LANGCODE.item.name`, with the backup for language-insensitive files as `domain.config.DOMAIN_MACHINE_NAME.item.name`, where `item.name` is the name of the configuration item being overridden. To override the site name, for instance, you begin by exporting the corresponding configuration item at the Configuration Synchronization screen for a single export: `admin/config/development/configuration/single/export` In this case, the type of configuration to be exported is "Simple configuration" and the particular item is named `system.site`. You should have a file like the following: ```YAML uuid: 536db351-7aec-407e-a746-70ba9cc9f190 name: Example mail: admin@example.com slogan: '' page: 403: '' 404: '' front: /user admin_compact_mode: false weight_select_max: 100 langcode: en default_langcode: en ``` An override file should contain only the specific data that you want to override. To override the name, the only line needed is the one beginning ```name:```. The resulting override looks like this: ```YAML name: Three ``` To override both the name and the slogan: ```YAML name: Three slogan: 'My site slogan' ``` *Warning: do not copy over the `uuid` value into the new file. Doing so may cause the configuration import to fail.* We want this to apply when the domain `three.example.com` is active and English is the active language. Therefore, this file would be named `domain.config.three_example_com.en.system.site`. If we wanted this file to apply whenever the domain `three.example.com` is active, we would leave off the language prefix: `domain.config.three_example_com.system.site`. For further examples, see the files in `\domain\domain_config\tests\modules\domain_config_test\config\install`. Import that file's contents at the Configuration Synchronization screen for a single import: `admin/config/development/configuration/single/import` Note that, unlike when you exported the item, here you always select "Simple configuration" as the configuration type to import, independent of the type of configuration you're overriding. settings.php overrides ---------------------- For environment-specific or sensitive overrides, use the settings.php method. In the above case, add `$conf['domain.config.three_example_com.en.system.site']['name'] = "My special site";` to your local settings.php file. This will ensure that the `three.example.com` domain gets the correct value regardless of other module overrides. Read more about the "Configuration override system" at https://www.drupal.org/node/1928898. Installation ============ If some variable changes are not picked up when the page renders, you may need add domain-sensitivity to the site's cache. To do so, clone `default.services.yml` to `services.yml` and change the `required_cache_contexts` value to: ```YAML required_cache_contexts: ['languages:language_interface', 'theme', 'user.permissions', 'url.site'] ``` Dependencies ============ - Domain