Referencia de la API de hooks.
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.
/**
* 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 conoptgroup-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.
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.
/**
* 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.
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.
/**
* 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.htmldescriben estilos de botón. El resultado llega adrupalSettings.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 carpetaselementsen temas, pero nada llama agetDxprElementsFolders(), así que el hook nunca se ejecuta. No registra elementos; para añadir uno, consulta Elementos personalizados.
¿Qué sigue?
- Permisos para los permisos que el módulo define.
- Referencia de la API para los servicios y rutas.