Riferimento API hook.

Learn DXPR BuilderExtendArchitectuur en API’s

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 con optgroup- 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 .html descrivono stili di pulsante. Il risultato raggiunge drupalSettings.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 cartelle elements nei temi, ma niente chiama getDxprElementsFolders(), quindi l’hook non gira mai. Non registra elementi; per aggiungerne uno, vedi Elementi personalizzati.

Prossimi passi