Riferimento API hook.
DXPR Builder ha cinque hook. dxpr_builder.api.php li documenta tutti e
cinque, con un esempio di ciascuno.
| Hook | Richiamato da | Effetto |
|---|---|---|
hook_dxpr_builder_classes_alter(&$classes) |
DxprBuilderService::editorAttach() |
Aggiunge classi all’elenco HTML classes nell’editor |
hook_dxpr_builder_icon_sets_alter(array &$icon_sets) |
DxprBuilderService::getIconSets() |
Aggiunge, cambia o rimuove set di icone nel selettore di icone |
hook_dxpr_builder_view_elements(array &$element) |
DxprBuilderFormatter::viewElements() |
Altera il render array di ogni campo mostrato con il formatter DXPR Builder |
hook_dxpr_builder_element_buttons_folders_alter(&$folders) |
DxprBuilderService::getButtonStyles() |
Nessun effetto visibile; vedi sotto |
hook_dxpr_builder_elements_folders_alter(&$folders) |
DxprBuilderService::getDxprElementsFolders() |
Nessun effetto visibile; vedi sotto |
hook_dxpr_builder_classes_alter
Aggiunge voci all’elenco di classi offerto dal campo HTML classes di
ogni elemento. Il codice lo invoca tramite
$this->moduleHandler->alter('dxpr_builder_classes', ...), quindi il
nome della funzione termina in _alter; una funzione chiamata
mymodule_dxpr_builder_classes() non è mai invocata.
/**
* 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): la chiave è un nome di classe, o più nomi separati da spazi; il valore è l’etichetta. Una chiave che inizia conoptgroup-avvia un gruppo di opzioni.
L’array contiene già le classi di ogni tema attivo che imposta
dxpr_builder_classes nel suo .info.yml, quindi un tema non ha bisogno di PHP.
Vedi Classi di utilità.
hook_dxpr_builder_icon_sets_alter
Gira dopo che il modulo ha unito tutti i file *.dxpr_icon_sets.yml
dei moduli e temi attivi. Preferisci il file YAML; usa l’hook
quando l’elenco dipende dalla logica 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',
],
];
}
L’hook gira dopo che i percorsi css relativi dai file YAML sono stati
risolti, quindi un set aggiunto qui richiede un percorso dalla root di Drupal,
come nell’esempio. Le chiavi di un set di icone e i 14 set integrati
sono elencati in Set di icone personalizzati.
hook_dxpr_builder_view_elements
Invocato con invokeAll() alla fine di
DxprBuilderFormatter::viewElements(), dopo che il formatter ha
collegato librerie, impostazioni e profilo. $element è il
render array del campo, passato per riferimento. Gira per ogni visitatore,
editor o no.
/**
* Implements hook_dxpr_builder_view_elements().
*/
function mymodule_dxpr_builder_view_elements(array &$element) {
$element['#attached']['library'][] = 'mymodule/builder_extras';
}
Hook senza effetto visibile
hook_dxpr_builder_element_buttons_folders_alter()riceve un elenco di cartelle i cui file.htmldescrivono stili di pulsante. Il risultato raggiungedrupalSettings.dxprBuilder.buttonStyles. L’elemento Button legge invece il suo elenco fisso di stili Bootstrap, quindi cartelle extra non cambiano niente nell’editor.hook_dxpr_builder_elements_folders_alter()altererebbe un elenco di cartelleelementsnei temi, ma niente chiamagetDxprElementsFolders(), quindi l’hook non gira mai. Non registra elementi; per aggiungerne uno, vedi Elementi personalizzati.
Prossimi passi
- Permessi per i permessi definiti dal modulo.
- Riferimento API per servizi e route.