Référence de l’API des hooks.
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.
/**
* 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 paroptgroup-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.
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.
/**
* 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.
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.
/**
* 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.htmldé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 dossierselementsdans les thèmes, mais rien n’appellegetDxprElementsFolders(), donc le hook ne tourne jamais. Il n’enregistre pas les éléments ; pour en ajouter un, voir Éléments personnalisés.
Et ensuite ?
- Permissions pour les permissions définies par le module.
- Référence de l’API pour les services et les routes.