Dokumentacja hooków API.
Kreator DXPR ma pięć hooków. dxpr_builder.api.php dokumentuje wszystkie
pięć, z przykładem każdego.
| Hook | Wywoływany z | Skutek |
|---|---|---|
hook_dxpr_builder_classes_alter(&$classes) |
DxprBuilderService::editorAttach() |
Dodaje klasy do listy HTML classes w edytorze |
hook_dxpr_builder_icon_sets_alter(array &$icon_sets) |
DxprBuilderService::getIconSets() |
Dodaje, zmienia albo usuwa zestawy ikon w wybieraku ikon |
hook_dxpr_builder_view_elements(array &$element) |
DxprBuilderFormatter::viewElements() |
Modyfikuje tablicę renderującą każdego pola pokazanego formaterem kreatora DXPR |
hook_dxpr_builder_element_buttons_folders_alter(&$folders) |
DxprBuilderService::getButtonStyles() |
Brak widocznego skutku; zobacz poniżej |
hook_dxpr_builder_elements_folders_alter(&$folders) |
DxprBuilderService::getDxprElementsFolders() |
Brak widocznego skutku; zobacz poniżej |
hook_dxpr_builder_classes_alter
Dodaje wpisy do listy klas oferowanej przez pole HTML classes
każdego elementu. Kod wywołuje go przez
$this->moduleHandler->alter('dxpr_builder_classes', ...), więc nazwa
funkcji kończy się na _alter; funkcja o nazwie
mymodule_dxpr_builder_classes() nigdy nie jest wywoływana.
/**
* 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(tablica): klucz to jedna nazwa klasy albo kilka oddzielonych spacjami; wartość to etykieta. Klucz zaczynający się odoptgroup-zaczyna grupę opcji.
Tablica zawiera już klasy każdego włączonego motywu ustawiającego
dxpr_builder_classes w swoim .info.yml, więc motyw nie potrzebuje PHP.
Zobacz klasy narzędziowe.
hook_dxpr_builder_icon_sets_alter
Uruchamia się po scaleniu przez moduł każdego pliku *.dxpr_icon_sets.yml
włączonych modułów i motywów. Wybierz plik YAML; hooka użyj,
gdy lista zależy od logiki runtime.
/**
* 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',
],
];
}
Hook uruchamia się po rozwiązaniu względnych ścieżek css z plików YAML,
więc zestaw dodany tutaj potrzebuje ścieżki od głównego katalogu Drupala,
jak w przykładzie. Klucze zestawu ikon i 14 wbudowanych
zestawów wymieniono na stronie własnych zestawów ikon.
hook_dxpr_builder_view_elements
Wywoływany przez invokeAll() na końcu
DxprBuilderFormatter::viewElements(), po dołączeniu przez formater jego
bibliotek, ustawień i profilu. $element to tablica renderująca pola,
przekazana przez referencję. Działa dla każdego przeglądającego,
redaktora czy nie.
/**
* Implements hook_dxpr_builder_view_elements().
*/
function mymodule_dxpr_builder_view_elements(array &$element) {
$element['#attached']['library'][] = 'mymodule/builder_extras';
}
Hooki bez widocznego skutku
hook_dxpr_builder_element_buttons_folders_alter()otrzymuje listę katalogów, których pliki.htmlopisują style przycisków. Wynik dociera dodrupalSettings.dxprBuilder.buttonStyles. Element Button odczytuje zamiast tego własną stałą listę stylów Bootstrapa, więc dodatkowe katalogi nic nie zmieniają w edytorze.hook_dxpr_builder_elements_folders_alter()zmodyfikowałby listę katalogówelementsw motywach, ale nic nie wywołujegetDxprElementsFolders(), więc hook nigdy nie działa. Nie rejestruje elementów; aby dodać jeden, zobacz własne elementy.
Co dalej?
- Uprawnienia dla uprawnień definiowanych przez moduł.
- Dokumentacja API dla usług i tras.