Довідник Hooks API.
DXPR Builder має п’ять хуків. dxpr_builder.api.php документує всі
п’ять, із прикладом кожного.
| Хук | Викликається з | Ефект |
|---|---|---|
hook_dxpr_builder_classes_alter(&$classes) |
DxprBuilderService::editorAttach() |
Додає класи до списку HTML classes у редакторі |
hook_dxpr_builder_icon_sets_alter(array &$icon_sets) |
DxprBuilderService::getIconSets() |
Додає, змінює або вилучає набори піктограм у виборі піктограм |
hook_dxpr_builder_view_elements(array &$element) |
DxprBuilderFormatter::viewElements() |
Змінює рендер-масив кожного поля, показаного з форматувальником DXPR Builder |
hook_dxpr_builder_element_buttons_folders_alter(&$folders) |
DxprBuilderService::getButtonStyles() |
Без видимого ефекту; див. нижче |
hook_dxpr_builder_elements_folders_alter(&$folders) |
DxprBuilderService::getDxprElementsFolders() |
Без видимого ефекту; див. нижче |
hook_dxpr_builder_classes_alter
Додає записи до списку класів, який пропонує поле HTML classes
кожного елемента. Код викликає його через
$this->moduleHandler->alter('dxpr_builder_classes', ...), тож
ім’я функції закінчується на _alter; функція з іменем
mymodule_dxpr_builder_classes() ніколи не викликається.
/**
* 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): ключ це одне ім’я класу, або кілька, розділених пробілами; значення це мітка. Ключ, що починається зoptgroup-, починає групу параметрів.
Масив уже містить класи кожної ввімкненої теми, яка встановлює
dxpr_builder_classes у своєму .info.yml, тож тема не потребує PHP.
Див. Службові класи.
hook_dxpr_builder_icon_sets_alter
Запускається після того, як модуль об’єднав кожен файл *.dxpr_icon_sets.yml
увімкнених модулів і тем. Надавайте перевагу файлу YAML; використовуйте хук,
коли список залежить від логіки часу виконання.
/**
* 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',
],
];
}
Хук запускається після того, як відносні шляхи css з файлів YAML
розв’язано, тож набір, доданий тут, потребує шляху від кореня
Drupal, як у прикладі. Ключі набору піктограм і 14 вбудованих
наборів перелічено на сторінці Власні набори піктограм.
hook_dxpr_builder_view_elements
Викликається з invokeAll() наприкінці
DxprBuilderFormatter::viewElements(), після того як форматувальник
приєднав свої бібліотеки, налаштування та профіль. $element це
рендер-масив поля, переданий за посиланням. Він запускається для кожного глядача,
редактора чи ні.
/**
* Implements hook_dxpr_builder_view_elements().
*/
function mymodule_dxpr_builder_view_elements(array &$element) {
$element['#attached']['library'][] = 'mymodule/builder_extras';
}
Хуки без видимого ефекту
hook_dxpr_builder_element_buttons_folders_alter()отримує список тек, чиї файли.htmlописують стилі кнопок. Результат досягаєdrupalSettings.dxprBuilder.buttonStyles. Елемент Button читає власний фіксований список стилів Bootstrap натомість, тож додаткові теки нічого не змінюють у редакторі.hook_dxpr_builder_elements_folders_alter()змінив би список текelementsу темах, але ніщо не викликаєgetDxprElementsFolders(), тож хук ніколи не запускається. Він не реєструє елементів; щоб додати один, див. Власні елементи.
Що далі?
- Дозволи для дозволів, які визначає модуль.
- Довідник API для служб і маршрутів.