.. include:: ../../Includes.txt .. _customization: ============= Custom themes ============= Target group: **Developers, Integrators** .. _adapt-default-theme: Adapt an existing theme ======================= If you want to adapt an existing theme, and not necessarily create a new one, you may want to consider adding another path to the default templates via adapting the root paths as so: .. code-block:: typoscript page { 1365499 = FLUIDTEMPLATE 1365499 { templateRootPaths { 150 = EXT:my-ext/Resources/Private/cookieman/Templates/{$plugin.tx_cookieman.settings.theme}/ } partialRootPaths { 150 = EXT:my-ext/Resources/Private/cookieman/Partials/ } layoutRootPaths { 150 = EXT:my-ext/Resources/Private/cookieman/Layouts/ } } } This way, you also do not need to add a `cookieman-theme.css` and `cookieman-theme.js` file, which are necessary when creating a full custom theme. .. _create-new-theme: Create a new theme ================== .. note:: We are happy to receive pull-requests for new themes! This is a recommendation how to set up your template structure for a custom extension. 1. Set your base path in TypoScript constants: .. code-block:: typoscript plugin.tx_cookieman.settings.resourcesBasePath = EXT:your_ext/Extensions/cookieman/Resources 2. Choose a new theme name: .. code-block:: typoscript plugin.tx_cookieman.settings.theme = myTheme 3. Create folder `EXT:your_ext/Extensions/cookieman/Resources/Private/Themes/myTheme/`. Add 3 folders: `Templates`, `Partials`, `Layouts`. 4. These folders will have the highest priority when looking for templates, partials or layouts now. The fallback will be `EXT:cookieman/Resources/Private/*`. 5. Create folder `EXT:your_ext/Extensions/cookieman/Resources/Public/Themes/myTheme`. This will hold the files `cookieman-theme(.min).css` and `cookieman-theme(.min).js`. Reimplement the methods cookieman.show() and cookieman.hide() in `cookieman-theme(.min).js`. 6. Copy the .css, .js and .html files as needed from a default theme. 7. Adapt the HTML/CSS/JS as needed. Storing user consent ==================== These **HTML element attributes** control the functionality: <* data-cookieman-save> ^^^^^^^^^^^^^^^^^^^^^^^ .. rst-class:: dl-parameters Save and close It is recommended to have that hidden on initial load and only show it when the user has made a change. The default themes show it when the user has clicked the "settings" collapsible. Example: .. code-block:: HTML <* data-cookieman-accept-all> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. rst-class:: dl-parameters Mark all checkboxes Example: .. code-block:: HTML <* data-cookieman-accept-none> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. rst-class:: dl-parameters Uncheck all checkboxes (will just leave the groups with the options preselected=1, disabled=1 checked) They can appear multiple times and also together on the same element. Example: .. code-block:: HTML Global functionality with data-attributes ========================================= <* data-cookieman-show> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. rst-class:: dl-parameters Opens the cookieman dialog It can be added to any HTML element. The element does not have to be there on initial load (thus it should work with web components, VueJS, react, etc.). Example: .. code-block:: HTML