---
url: 'https://dxpr.com/es/hc/documentation/learn-dxpr-builder/development/hooks-api'
title: 'Referencia de la API de hooks | DXPR'
author:
  name: Jurriaan
  url: 'https://dxpr.com/users/jurriaan'
date: '2026-10-24T11:18:28+00:00'
copyright: 'Copyright DXPR. All rights reserved.'
type: article
summary: |-
  DXPR Builder tiene cinco hooks. dxpr_builder.api.php documenta los
  cinco, con un ejemplo de cada uno.
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:18:28+0000'
  'image:alt': 'DXPR, powered by Drupal: AI-powered Drupal for marketers.'
schema:
  '@context': 'https://schema.org'
  '@graph':
    -
      mainEntity: {  }
    -
      '@type': TechArticle
      headline: 'Referencia de la API de hooks'
      description: |-
        DXPR Builder tiene cinco hooks. dxpr_builder.api.php documenta los
        cinco, con un ejemplo de cada uno.
      image:
        '@type': ImageObject
        url: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
        width: '1200'
        height: '630'
      datePublished: '2026-10-24T11:18:28+0000'
      dateModified: '2026-10-24T11:18:28+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/es/hc/documentation/learn-dxpr-builder/development/hooks-api'
      articleSection: 'Architectuur en API’s'
    -
      '@type': WebPage
      '@id': 'https://dxpr.com/es/hc/documentation/learn-dxpr-builder/development/hooks-api'
      description: |-
        DXPR Builder tiene cinco hooks. dxpr_builder.api.php documenta los
        cinco, con un ejemplo de cada uno.
      breadcrumb:
        '@type': BreadcrumbList
        itemListElement:
          -
            '@type': ListItem
            position: 1
            name: Inicio
            item: 'https://dxpr.com/es'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
      inLanguage: es
---
[Help Center](/es/hc)/[Documentation](/es/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) # Referencia de la API de hooks.

 Learn DXPR BuilderExtendArchitectuur en API’s

   ## In this guide

 Related guides

- [Permisos](/es/hc/documentation/learn-dxpr-builder/development/permissions)
- [Referencia de la API](/es/hc/documentation/learn-dxpr-builder/development/api)

DXPR Builder tiene cinco hooks. `dxpr_builder.api.php` documenta los cinco, con un ejemplo de cada uno.

| Hook | Invocado desde | Efecto |
|---|---|---|
| `hook_dxpr_builder_classes_alter(&$classes)` | `DxprBuilderService::editorAttach()` | Añade clases a la lista **HTML classes** en el editor |
| `hook_dxpr_builder_icon_sets_alter(array &$icon_sets)` | `DxprBuilderService::getIconSets()` | Añade, cambia o quita conjuntos de iconos en el selector de iconos |
| `hook_dxpr_builder_view_elements(array &$element)` | `DxprBuilderFormatter::viewElements()` | Altera el array de renderizado de cada campo mostrado con el formato de DXPR Builder |
| `hook_dxpr_builder_element_buttons_folders_alter(&$folders)` | `DxprBuilderService::getButtonStyles()` | Sin efecto visible; ver abajo |
| `hook_dxpr_builder_elements_folders_alter(&$folders)` | `DxprBuilderService::getDxprElementsFolders()` | Sin efecto visible; ver abajo |

## hook\_dxpr\_builder\_classes\_alter

Añade entradas a la lista de clases que el campo **HTML classes** de cada elemento ofrece. El código lo invoca con `$this->moduleHandler->alter('dxpr_builder_classes', ...)`, así que el nombre de función termina en `_alter`; una función llamada `mymodule_dxpr_builder_classes()` nunca se llama.

```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 clave es un nombre de clase, o varios separados por espacios; el valor es la etiqueta. Una clave que empieza con `optgroup-` inicia un grupo de opciones.

El array ya tiene las clases de cada tema habilitado que fija `dxpr_builder_classes` en su `.info.yml`, así que un tema no necesita PHP. Consulta [Clases de utilidades](/hc/documentation/learn-dxpr-builder/customization/utility-classes).

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

Se ejecuta después de que el módulo fusionó cada archivo `*.dxpr_icon_sets.yml`de los módulos y temas habilitados. Prefiere el archivo YAML; usa el hook cuando la lista depende de lógica en tiempo de ejecución.

```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',
    ],
  ];
}

```

El hook se ejecuta después de que las rutas `css` relativas de los archivos YAML se resolvieron, así que un conjunto añadido aquí necesita una ruta desde la raíz Drupal, como en el ejemplo. Las claves de un conjunto de iconos y los 14 conjuntos incluidos se enumeran en [Conjuntos de iconos personalizados](/hc/documentation/learn-dxpr-builder/development/icon-sets).

## hook\_dxpr\_builder\_view\_elements

Invocado con `invokeAll()` al final de `DxprBuilderFormatter::viewElements()`, después de que el formato adjuntó sus bibliotecas, ajustes y perfil. `$element` es el array de renderizado del campo, pasado por referencia. Se ejecuta para cada visita, edite o no.

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

```

## Hooks sin efecto visible

- `hook_dxpr_builder_element_buttons_folders_alter()` recibe una lista de carpetas cuyos archivos `.html` describen estilos de botón. El resultado llega a `drupalSettings.dxprBuilder.buttonStyles`. El elemento Button lee su propia lista fija de estilos Bootstrap, así que carpetas extra no cambian nada en el editor.
- `hook_dxpr_builder_elements_folders_alter()` alteraría una lista de carpetas `elements` en temas, pero nada llama a `getDxprElementsFolders()`, así que el hook nunca se ejecuta. No registra elementos; para añadir uno, consulta [Elementos personalizados](/hc/documentation/learn-dxpr-builder/development/custom-elements).

## ¿Qué sigue?

- [Permisos](/hc/documentation/learn-dxpr-builder/development/permissions) para los permisos que el módulo define.
- [Referencia de la API](/hc/documentation/learn-dxpr-builder/development/api) para los servicios y rutas.