Drupal is a registered trademark of Dries Buytaert
drupal 11.3.7 Update released for Drupal core (11.3.7)! drupal 11.2.11 Update released for Drupal core (11.2.11)! drupal 10.6.7 Update released for Drupal core (10.6.7)! drupal 10.5.9 Update released for Drupal core (10.5.9)! cms 2.1.1 Update released for Drupal core (2.1.1)! drupal 11.3.6 Update released for Drupal core (11.3.6)! drupal 10.6.6 Update released for Drupal core (10.6.6)! cms 2.1.0 Update released for Drupal core (2.1.0)! bootstrap 8.x-3.40 Minor update available for theme bootstrap (8.x-3.40). menu_link_attributes 8.x-1.7 Minor update available for module menu_link_attributes (8.x-1.7). eca 3.1.1 Minor update available for module eca (3.1.1). layout_paragraphs 2.1.3 Minor update available for module layout_paragraphs (2.1.3). ai 1.3.3 Minor update available for module ai (1.3.3). ai 1.2.14 Minor update available for module ai (1.2.14). node_revision_delete 2.0.3 Minor update available for module node_revision_delete (2.0.3). moderated_content_bulk_publish 2.0.52 Minor update available for module moderated_content_bulk_publish (2.0.52). klaro 3.0.10 Minor update available for module klaro (3.0.10). klaro 3.0.9 Minor update available for module klaro (3.0.9). layout_paragraphs 2.1.2 Minor update available for module layout_paragraphs (2.1.2). geofield_map 11.1.8 Minor update available for module geofield_map (11.1.8).

styles_api

2,423 sites Security covered
View on drupal.org

This module allows other modules or themes to register theme templates on a YAML file (replacing hook_theme()) and provide a repository for all themes registered.

This will give more order to theme definitions, taking them away form code.

But moreover in this way themes and modules could gather information of registered themes implementation.

For example a module could alter block form to add select field to forms, providing a UI to easily assign predefined templates for elements, blocks or regions.

Among standard hook_theme() settings, the definition will add Admin UI elements like labels, icons, categories, descriptions.

Declaring themes

Themes must be registered on a *.themes.yml file with the following format:

block__clean:
  label: Clean Wrapper
  type: block
  category: Block
  configuration:
    path: templates/clean
    base hook: block
    render element: elements

The id of the theme will name the template as in hook_theme().
Path is relative to the module or template, base path eill be added for proper rendering.

Basic functions

Style::stylePluginManager()->getDefinitions() will return all themes declared.

Projects using Styles API

We hope this module will be merged into core: Declare themes on YAML file as an alternative to hook_theme

Activity

Total releases
1
First release
Jan 2025
Latest release
1 year ago
Release cadence
Stability
100% stable

Releases

Version Type Release date
8.x-1.3 Stable Jan 22, 2025