Hooks-API-Referenz.
DXPR Builder hat fünf Hooks. dxpr_builder.api.php dokumentiert alle
fünf, mit je einem Beispiel.
| Hook | Aufgerufen aus | Wirkung |
|---|---|---|
hook_dxpr_builder_classes_alter(&$classes) |
DxprBuilderService::editorAttach() |
Fügt Klassen zur Liste HTML classes im Editor hinzu |
hook_dxpr_builder_icon_sets_alter(array &$icon_sets) |
DxprBuilderService::getIconSets() |
Fügt Icon-Sets in der Icon-Auswahl hinzu, ändert oder entfernt sie |
hook_dxpr_builder_view_elements(array &$element) |
DxprBuilderFormatter::viewElements() |
Ändert das Render-Array jedes Felds, das mit dem DXPR-Builder-Formatierer gezeigt wird |
hook_dxpr_builder_element_buttons_folders_alter(&$folders) |
DxprBuilderService::getButtonStyles() |
Keine sichtbare Wirkung; siehe unten |
hook_dxpr_builder_elements_folders_alter(&$folders) |
DxprBuilderService::getDxprElementsFolders() |
Keine sichtbare Wirkung; siehe unten |
hook_dxpr_builder_classes_alter
Fügt Einträge zur Klassenliste hinzu, die das Feld HTML classes
jedes Elements bietet. Der Code ruft ihn über
$this->moduleHandler->alter('dxpr_builder_classes', ...) auf, daher
endet der Funktionsname auf _alter; eine Funktion namens
mymodule_dxpr_builder_classes() wird nie aufgerufen.
/**
* 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): Der Schlüssel ist ein Klassenname, oder mehrere per Leerzeichen getrennt; der Wert ist die Bezeichnung. Ein Schlüssel, der mitoptgroup-beginnt, startet eine Optionsgruppe.
Das Array hält bereits die Klassen jedes aktivierten Themes, das
dxpr_builder_classes in seiner .info.yml setzt, daher braucht ein Theme
kein PHP. Siehe Dienstklassen.
hook_dxpr_builder_icon_sets_alter
Läuft, nachdem das Modul jede *.dxpr_icon_sets.yml-Datei der
aktivierten Module und Themes gemergt hat. Bevorzugen Sie die YAML-Datei; nutzen
Sie den Hook, wenn die Liste von Lauflogik abhängt.
/**
* 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',
],
];
}
Der Hook läuft, nachdem relative css-Pfade aus den YAML-Dateien aufgelöst
wurden, daher braucht ein hier hinzugefügtes Set einen Pfad ab Drupal-Root, wie im
Beispiel. Die Schlüssel eines Icon-Sets und die 14 eingebauten Sets stehen auf
Eigene Icon-Sets.
hook_dxpr_builder_view_elements
Aufgerufen mit invokeAll() am Ende von
DxprBuilderFormatter::viewElements(), nachdem der Formatierer seine
Bibliotheken, Einstellungen und Profile angehängt hat. $element ist das
Render-Array des Felds, per Referenz übergeben. Es läuft für alle Betrachtenden,
ob mit oder ohne Bearbeitungszugang.
/**
* Implements hook_dxpr_builder_view_elements().
*/
function mymodule_dxpr_builder_view_elements(array &$element) {
$element['#attached']['library'][] = 'mymodule/builder_extras';
}
Hooks ohne sichtbare Wirkung
hook_dxpr_builder_element_buttons_folders_alter()erhält eine Liste von Ordnern, deren.html-Dateien Schaltflächenstile beschreiben. Das Ergebnis erreichtdrupalSettings.dxprBuilder.buttonStyles. Das Button-Element liest stattdessen seine eigene feste Liste Bootstrap-Stile, daher ändern zusätzliche Ordner nichts im Editor.hook_dxpr_builder_elements_folders_alter()würde eine Liste vonelements-Ordnern in Themes ändern, aber nichts ruftgetDxprElementsFolders()auf, daher läuft der Hook nie. Er registriert keine Elemente; um eines hinzuzufügen, siehe Eigene Elemente erstellen.
Wie geht es weiter?
- Berechtigungen für die Berechtigungen, die das Modul definiert.
- API-Referenz für Dienste und Routen.