TYPO3 v15 dev-main snapshot ()
This commit is contained in:
@@ -0,0 +1,155 @@
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-103437-1712062105:
|
||||
|
||||
======================================
|
||||
Feature: #103437 - Introduce site sets
|
||||
======================================
|
||||
|
||||
See :issue:`103437`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
Site sets ship parts of site configuration as composable pieces. They are
|
||||
intended to deliver settings, TypoScript, TSconfig and reference enabled content
|
||||
blocks for the scope of a site.
|
||||
|
||||
Extensions can provide multiple sets in order to ship presets for different
|
||||
sites or subsets (think of frameworks) where selected features are exposed
|
||||
as a subset (example: `typo3/seo-sitemap`).
|
||||
|
||||
A set is defined in an extension's subfolder in :file:`Configuration/Sets/`, for
|
||||
example :file:`EXT:my_extension/Configuration/Sets/MySet/config.yaml`.
|
||||
|
||||
The folder name in :file:`Configuration/Sets/` is arbitrary, significant
|
||||
is the `name` defined in :file:`config.yaml`. The `name` uses a `vendor/name`
|
||||
scheme by convention, and *should* use the same vendor as the containing
|
||||
extension. It may differ if needed for compatibility reasons (e.g. when sets are
|
||||
moved to other extensions). If an extension provides exactly one set that should
|
||||
have the same `name` as defined in :file:`composer.json`.
|
||||
|
||||
The :file:`config.yaml` for a set that is composed of three subsets looks as
|
||||
follows:
|
||||
|
||||
.. code-block:: yaml
|
||||
:caption: EXT:my_extension/Configuration/Sets/MySet/config.yaml
|
||||
|
||||
name: my-vendor/my-set
|
||||
label: My Set
|
||||
|
||||
# Load TypoScript, TSconfig and settings from dependencies
|
||||
dependencies:
|
||||
- some-namespace/slider
|
||||
- other-namespace/fancy-carousel
|
||||
|
||||
|
||||
Sets are applied to sites via `dependencies` array in site configuration:
|
||||
|
||||
.. code-block:: yaml
|
||||
:caption: config/sites/my-site/config.yaml
|
||||
|
||||
base: 'http://example.com/'
|
||||
rootPageId: 1
|
||||
dependencies:
|
||||
- my-vendor/my-set
|
||||
|
||||
Site sets can also be edited via the backend module
|
||||
:guilabel:`Site Management > Sites`.
|
||||
|
||||
A list of available site sets can be retrieved with the console command
|
||||
:bash:`bin/typo3 site:sets:list`.
|
||||
|
||||
Settings definitions
|
||||
--------------------
|
||||
|
||||
Sets can define settings definitions which contain more metadata than just a
|
||||
value: They contain UI-relevant options like `label`, `description`, `category`
|
||||
and `tags` and types like `int`, `bool`, `string`, `stringlist`, `text` or
|
||||
`color`. These definitions are placed in :file:`settings.definitions.yaml`
|
||||
next to the site set file :file:`config.yaml`.
|
||||
|
||||
The description can make use of markdown syntax for richtext formatting.
|
||||
|
||||
.. code-block:: yaml
|
||||
:caption: EXT:my_extension/Configuration/Sets/MySet/settings.definitions.yaml
|
||||
|
||||
settings:
|
||||
foo.bar.baz:
|
||||
label: 'My example baz setting'
|
||||
description: 'Configure `baz` to be used in `bar`.'
|
||||
type: int
|
||||
default: 5
|
||||
|
||||
|
||||
Settings for subsets
|
||||
--------------------
|
||||
|
||||
Settings for subsets (e.g. to configure settings in declared dependencies)
|
||||
can be shipped via :file:`settings.yaml` when placed next to the set file
|
||||
:file:`config.yaml`.
|
||||
|
||||
Note that default values for settings provided by the set do not need to be
|
||||
defined here, as defaults are to be provided within
|
||||
:file:`settings.definitions.yaml`.
|
||||
|
||||
Here is an example where the setting `styles.content.defaultHeaderType` — as
|
||||
provided by `typo3/fluid-styled-content` — is configured via
|
||||
:file:`settings.yaml`:
|
||||
|
||||
.. code-block:: yaml
|
||||
:caption: EXT:my_extension/Configuration/Sets/MySet/settings.yaml
|
||||
|
||||
styles.content.defaultHeaderType: 1
|
||||
|
||||
|
||||
This setting will be exposed as site setting whenever the set
|
||||
`my-vendor/my-set` is applied to a site configuration.
|
||||
|
||||
|
||||
Hidden sets
|
||||
-----------
|
||||
|
||||
Sets may be hidden from the backend set selection in
|
||||
:guilabel:`Site Management > Sites` and the console command
|
||||
:bash:`bin/typo3 site:sets:list` by adding a `hidden` flag to the
|
||||
:file:`config.yaml` definition:
|
||||
|
||||
|
||||
.. code-block:: yaml
|
||||
:caption: EXT:my_extension/Configuration/Sets/MyHelperSet/config.yaml
|
||||
|
||||
name: my-vendor/my-helperset
|
||||
label: A helper Set that is not visible inside the GUI
|
||||
hidden: true
|
||||
|
||||
|
||||
Integrators may choose to hide existing sets from the list of available
|
||||
sets for backend users via User TSConfig, in case only a curated list of sets
|
||||
shall be selectable:
|
||||
|
||||
.. code-block:: typoscript
|
||||
:caption: EXT:my_extension/Configuration/user.tsconfig
|
||||
|
||||
options.sites.hideSets := addToList(typo3/fluid-styled-content)
|
||||
|
||||
|
||||
The :guilabel:`Site Management > Sites` GUI will not show hidden sets,
|
||||
but makes one exception if a hidden set has already been applied to a site
|
||||
(e.g. by manual modification of :file:`config.yaml`). In this case a set
|
||||
marked as hidden will be shown in the list of currently activated sets (that means
|
||||
it can be introspected and removed via backend UI).
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Sites can be composed of sets where relevant configuration, templates, assets
|
||||
and setting definitions are combined in a central place and applied to sites as
|
||||
one logical volume.
|
||||
|
||||
Sets have dependency management and therefore allow sharing code between
|
||||
multiple TYPO3 sites and extensions in a flexible way.
|
||||
|
||||
|
||||
.. index:: Backend, Frontend, PHP-API, YAML, ext:core
|
||||
Reference in New Issue
Block a user