---
url: 'https://dxpr.com/fr/hc/documentation/learn-dxpr-builder/development/hooks-api'
title: 'Référence de l’API des hooks | DXPR'
author:
  name: Jurriaan
  url: 'https://dxpr.com/users/jurriaan'
date: '2026-10-24T11:00:54+00:00'
copyright: 'Copyright DXPR. All rights reserved.'
type: article
summary: 'DXPR Builder a cinq hooks. dxpr_builder.api.php documente les cinq, avec un exemple de chacun.'
tags:
  - 'Architectuur en API’s'
image: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
published: true
og:
  site_name: DXPR
  updated_time: '2026-10-24T11:00:54+0000'
  'image:alt': 'DXPR, powered by Drupal: AI-powered Drupal for marketers.'
schema:
  '@context': 'https://schema.org'
  '@graph':
    -
      mainEntity: {  }
    -
      '@type': TechArticle
      headline: 'Référence de l’API des hooks'
      description: 'DXPR Builder a cinq hooks. dxpr_builder.api.php documente les cinq, avec un exemple de chacun.'
      image:
        '@type': ImageObject
        url: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
        width: '1200'
        height: '630'
      datePublished: '2026-10-24T11:00:54+0000'
      dateModified: '2026-10-24T11:00:54+0000'
      author:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
        url: 'https://dxpr.com/'
        logo:
          '@type': ImageObject
          url: 'https://dxpr.com/themes/custom/dxpr_com/dxpr-logo-dark.svg'
          width: '1348'
          height: '501'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
        url: 'https://dxpr.com/'
        logo:
          '@type': ImageObject
          url: 'https://dxpr.com/themes/custom/dxpr_com/dxpr-logo-dark.svg'
          width: '1348'
          height: '501'
      mainEntityOfPage: 'https://dxpr.com/fr/hc/documentation/learn-dxpr-builder/development/hooks-api'
      articleSection: 'Architectuur en API’s'
    -
      '@type': WebPage
      '@id': 'https://dxpr.com/fr/hc/documentation/learn-dxpr-builder/development/hooks-api'
      description: 'DXPR Builder a cinq hooks. dxpr_builder.api.php documente les cinq, avec un exemple de chacun.'
      breadcrumb:
        '@type': BreadcrumbList
        itemListElement:
          -
            '@type': ListItem
            position: 1
            name: Accueil
            item: 'https://dxpr.com/fr'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
      inLanguage: fr
---
[Help Center](/fr/hc)/[Documentation](/fr/hc/documentation) /[Learn DXPR Builder](/hc/documentation/learn-dxpr-builder) /[Extend](/hc/documentation/learn-dxpr-builder/extend) /[Architectuur en API’s](/hc/documentation/learn-dxpr-builder/extend/architecture) # Référence de l’API des hooks.

 Learn DXPR BuilderExtendArchitectuur en API’s

   ## In this guide

 Related guides

- [Permissions](/fr/hc/documentation/learn-dxpr-builder/development/permissions)
- [Référence de l’API](/fr/hc/documentation/learn-dxpr-builder/development/api)

DXPR Builder a cinq hooks. `dxpr_builder.api.php` documente les cinq, avec un exemple de chacun.

| Hook | Appelé depuis | Effet |
|---|---|---|
| `hook_dxpr_builder_classes_alter(&$classes)` | `DxprBuilderService::editorAttach()` | Ajoute des classes à la liste **HTML classes** dans l’éditeur |
| `hook_dxpr_builder_icon_sets_alter(array &$icon_sets)` | `DxprBuilderService::getIconSets()` | Ajoute, change ou retire des jeux d’icônes dans le sélecteur d’icônes |
| `hook_dxpr_builder_view_elements(array &$element)` | `DxprBuilderFormatter::viewElements()` | Modifie le tableau de rendu de chaque champ affiché avec le formateur DXPR Builder |
| `hook_dxpr_builder_element_buttons_folders_alter(&$folders)` | `DxprBuilderService::getButtonStyles()` | Aucun effet visible ; voir ci-dessous |
| `hook_dxpr_builder_elements_folders_alter(&$folders)` | `DxprBuilderService::getDxprElementsFolders()` | Aucun effet visible ; voir ci-dessous |

## hook\_dxpr\_builder\_classes\_alter

Ajoute des entrées à la liste de classes offerte par le champ **HTML classes** de chaque élément. Le code l’appelle via `$this->moduleHandler->alter('dxpr_builder_classes', ...)`, donc le nom de fonction se termine par `_alter` ; une fonction nommée `mymodule_dxpr_builder_classes()` n’est jamais appelée.

```php
/**
 * Implements hook_dxpr_builder_classes_alter().
 */
function mymodule_dxpr_builder_classes_alter(&$dxpr_builder_classes) {
  // Start a new option group.
  $dxpr_builder_classes['optgroup-brand'] = t('Brand styles');
  $dxpr_builder_classes['brand-primary-bg'] = t('Primary background');
  $dxpr_builder_classes['brand-accent-text'] = t('Accent text colour');
}

```

- `&$dxpr_builder_classes` (array) : la clé est un nom de classe, ou plusieurs séparés par des espaces ; la valeur est le libellé. Une clé qui commence par `optgroup-` démarre un groupe d’options.

Le tableau contient déjà les classes de chaque thème activé qui définit `dxpr_builder_classes` dans son `.info.yml`, donc un thème n’a pas besoin de PHP. Voir [Classes utilitaires](/hc/documentation/learn-dxpr-builder/customization/utility-classes).

## hook\_dxpr\_builder\_icon\_sets\_alter

Tourne après que le module a fusionné chaque fichier `*.dxpr_icon_sets.yml` des modules et thèmes activés. Préférez le fichier YAML ; utilisez le hook quand la liste dépend de logique d’exécution.

```php
/**
 * Implements hook_dxpr_builder_icon_sets_alter().
 */
function mymodule_dxpr_builder_icon_sets_alter(array &$icon_sets) {
  $module_path = \Drupal::service('extension.list.module')
    ->getPath('mymodule');
  $icon_sets['material'] = [
    'label' => t('Material Symbols'),
    'prefix' => 'material-symbols',
    'css' => $module_path . '/vendor/material-symbols.css',
    'library' => 'mymodule/material_symbols',
    'icons' => [
      'material-symbols material-symbols-star',
      'material-symbols material-symbols-home',
    ],
  ];
}

```

Le hook tourne après résolution des chemins `css` relatifs des fichiers YAML, donc un jeu ajouté ici a besoin d’un chemin depuis la racine Drupal, comme dans l’exemple. Les clés d’un jeu d’icônes et les 14 jeux intégrés sont listés sur [Jeux d’icônes personnalisés](/hc/documentation/learn-dxpr-builder/development/icon-sets).

## hook\_dxpr\_builder\_view\_elements

Appelé avec `invokeAll()` à la fin de `DxprBuilderFormatter::viewElements()`, après que le formateur a attaché ses bibliothèques, réglages et profil. `$element` est le tableau de rendu du champ, passé par référence. Il tourne pour chaque visiteur, contributeur ou non.

```php
/**
 * Implements hook_dxpr_builder_view_elements().
 */
function mymodule_dxpr_builder_view_elements(array &$element) {
  $element['#attached']['library'][] = 'mymodule/builder_extras';
}

```

## Hooks sans effet visible

- `hook_dxpr_builder_element_buttons_folders_alter()` reçoit une liste de dossiers dont les fichiers `.html` décrivent des styles de boutons. Le résultat parvient à `drupalSettings.dxprBuilder.buttonStyles`. L’élément Button lit plutôt sa propre liste fixe de styles Bootstrap, donc des dossiers supplémentaires ne changent rien dans l’éditeur.
- `hook_dxpr_builder_elements_folders_alter()` modifierait une liste de dossiers `elements` dans les thèmes, mais rien n’appelle `getDxprElementsFolders()`, donc le hook ne tourne jamais. Il n’enregistre pas les éléments ; pour en ajouter un, voir [Éléments personnalisés](/hc/documentation/learn-dxpr-builder/development/custom-elements).

## Et ensuite ?

- [Permissions](/hc/documentation/learn-dxpr-builder/development/permissions) pour les permissions définies par le module.
- [Référence de l’API](/hc/documentation/learn-dxpr-builder/development/api) pour les services et les routes.