Referência da API de hooks.
O DXPR Builder tem cinco hooks. dxpr_builder.api.php documenta os
cinco, com um exemplo de cada.
| Hook | Invoked from | Effect |
|---|---|---|
hook_dxpr_builder_classes_alter(&$classes) |
DxprBuilderService::editorAttach() |
Adiciona classes à lista HTML classes no editor |
hook_dxpr_builder_icon_sets_alter(array &$icon_sets) |
DxprBuilderService::getIconSets() |
Adiciona, muda ou remove conjuntos de ícones no seletor de ícones |
hook_dxpr_builder_view_elements(array &$element) |
DxprBuilderFormatter::viewElements() |
Altera o render array de cada campo apresentado com o formatador do DXPR Builder |
hook_dxpr_builder_element_buttons_folders_alter(&$folders) |
DxprBuilderService::getButtonStyles() |
Sem efeito visível; ver abaixo |
hook_dxpr_builder_elements_folders_alter(&$folders) |
DxprBuilderService::getDxprElementsFolders() |
Sem efeito visível; ver abaixo |
hook_dxpr_builder_classes_alter
Adiciona entradas à lista de classes que o campo HTML classes de
cada elemento oferece. O código invoca-o através de
$this->moduleHandler->alter('dxpr_builder_classes', ...), por isso o
nome da função termina em _alter; uma função chamada
mymodule_dxpr_builder_classes() nunca é chamada.
/**
* 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): a chave é um nome de classe, ou vários separados por espaços; o valor é a etiqueta. Uma chave que começa comoptgroup-inicia um grupo de opções.
O array já tem as classes de cada tema ativo que define
dxpr_builder_classes no .info.yml, por isso um tema não precisa de PHP.
Consulte Classes utilitárias.
hook_dxpr_builder_icon_sets_alter
Corre depois de o módulo juntar cada ficheiro *.dxpr_icon_sets.yml
dos módulos e temas ativos. Prefira o ficheiro YAML; use o hook
quando a lista depende de lógica de execução.
/**
* 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',
],
];
}
O hook corre depois de os caminhos css relativos dos ficheiros YAML terem
sido resolvidos, por isso um conjunto adicionado aqui precisa de um caminho da raiz do
Drupal, como no exemplo. As chaves de um conjunto de ícones e os 14 conjuntos incluídos
estão enumerados em Conjuntos de ícones personalizados.
hook_dxpr_builder_view_elements
Invocado com invokeAll() no fim de
DxprBuilderFormatter::viewElements(), depois de o formatador ter
anexado bibliotecas, definições e perfil. $element é o
render array do campo, passado por referência. Corre para cada visitante,
editor ou não.
/**
* Implements hook_dxpr_builder_view_elements().
*/
function mymodule_dxpr_builder_view_elements(array &$element) {
$element['#attached']['library'][] = 'mymodule/builder_extras';
}
Hooks sem efeito visível
hook_dxpr_builder_element_buttons_folders_alter()recebe uma lista de pastas cujos ficheiros.htmldescrevem estilos de botão. O resultado chega adrupalSettings.dxprBuilder.buttonStyles. O elemento Button lê antes a própria lista fixa de estilos Bootstrap, por isso pastas extra nada mudam no editor.hook_dxpr_builder_elements_folders_alter()alteraria uma lista de pastaselementsem temas, mas nada chamagetDxprElementsFolders(), por isso o hook nunca corre. Não regista elementos; para adicionar um, consulte Elementos personalizados.
O que se segue?
- Permissões para as permissões que o módulo define.
- Referência de API para os serviços e rotas.