Hooks API.
DXPR Builder heeft vijf hooks. dxpr_builder.api.php documenteert ze alle vijf, met een
voorbeeld van elk.
| Hook | Aangeroepen vanuit | Effect |
|---|---|---|
hook_dxpr_builder_classes_alter(&$classes) |
DxprBuilderService::editorAttach() |
Voegt klassen toe aan de lijst HTML classes in de editor |
hook_dxpr_builder_icon_sets_alter(array &$icon_sets) |
DxprBuilderService::getIconSets() |
Voegt pictogrammensets toe aan de pictogramkiezer, wijzigt of verwijdert ze |
hook_dxpr_builder_view_elements(array &$element) |
DxprBuilderFormatter::viewElements() |
Wijzigt de render array van elk veld getoond met de DXPR Builder-formatter |
hook_dxpr_builder_element_buttons_folders_alter(&$folders) |
DxprBuilderService::getButtonStyles() |
Geen zichtbaar effect; zie hieronder |
hook_dxpr_builder_elements_folders_alter(&$folders) |
DxprBuilderService::getDxprElementsFolders() |
Geen zichtbaar effect; zie hieronder |
hook_dxpr_builder_classes_alter
Voegt vermeldingen toe aan de klassenlijst die het veld HTML classes van
elk element biedt. De code roept hem aan via
$this->moduleHandler->alter('dxpr_builder_classes', ...), dus de
functienaam eindigt op _alter; een functie genaamd
mymodule_dxpr_builder_classes() wordt nooit aangeroepen.
/**
* 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): de sleutel is één klassenaam, of meerdere gescheiden door spaties; de waarde is het label. Een sleutel die begint metoptgroup-start een optiegroep.
De array bevat al de klassen van elk ingeschakeld thema dat
dxpr_builder_classes in zijn .info.yml zet, dus een thema heeft geen PHP nodig.
Zie Utility-klassen.
hook_dxpr_builder_icon_sets_alter
Draait nadat de module elk *.dxpr_icon_sets.yml-bestand van de ingeschakelde modules en thema's
heeft samengevoegd. Geef de voorkeur aan het YAML-bestand; gebruik de hook wanneer de lijst van
runtimelogica afhangt.
/**
* 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',
],
];
}
De hook draait nadat relatieve css-paden uit de YAML-bestanden zijn opgelost, dus een set die hier
wordt toegevoegd heeft een pad vanaf de Drupal-root nodig, zoals in het voorbeeld. De sleutels van een
pictogrammenset en de 14 meegeleverde sets staan op Aangepaste
pictogrammensets.
hook_dxpr_builder_view_elements
Aangeroepen met invokeAll() aan het eind van
DxprBuilderFormatter::viewElements(), nadat de formatter zijn libraries, instellingen en profiel
heeft gekoppeld. $element is de render array van het veld, by reference doorgegeven. Hij draait voor
elke kijker, redacteur of niet.
/**
* Implements hook_dxpr_builder_view_elements().
*/
function mymodule_dxpr_builder_view_elements(array &$element) {
$element['#attached']['library'][] = 'mymodule/builder_extras';
}
Hooks zonder zichtbaar effect
hook_dxpr_builder_element_buttons_folders_alter()ontvangt een lijst met mappen waarvan de.html-bestanden knopstijlen beschrijven. Het resultaat komt indrupalSettings.dxprBuilder.buttonStyles. Het Knop-element leest zijn eigen vaste lijst met Bootstrap-stijlen, dus extra mappen wijzigen niets in de editor.hook_dxpr_builder_elements_folders_alter()zou een lijst metelements-mappen in thema's wijzigen, maar niets roeptgetDxprElementsFolders()aan, dus de hook draait nooit. Hij registreert geen elementen; om er een toe te voegen, zie Aangepaste elementen.
Wat nu?
- Rechten voor de rechten die de module definieert.
- API-referentie voor de services en routes.