Custom themes

Target group: Developers, Integrators

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:

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 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:

plugin.tx_cookieman.settings.resourcesBasePath = EXT:your_ext/Extensions/cookieman/Resources
  1. Choose a new theme name:

plugin.tx_cookieman.settings.theme = myTheme
  1. Create folder EXT:your_ext/Extensions/cookieman/Resources/Private/Themes/myTheme/. Add 3 folders: Templates, Partials, Layouts.

  2. These folders will have the highest priority when looking for templates, partials or layouts now. The fallback will be EXT:cookieman/Resources/Private/*.

  3. 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.

  4. Copy the .css, .js and .html files as needed from a default theme.

  5. Adapt the HTML/CSS/JS as needed.

Global functionality with data-attributes

<* data-cookieman-show>

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:

<button data-cookieman-show>
  Adjust your cookie preferences
</button>