후크 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(배열). 키는 클래스 이름 하나 또는 공백으로 구분된 여러 개. 값은 레이블.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',
],
];
}
후크는 YAML 파일의 상대 css 경로가
확인된 뒤에 실행되므로, 여기에서 추가하는 세트에는 예처럼 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()를 호출하는 곳이 없으므로 후크가 실행되지 않습니다. 요소를 등록하지 않습니다. 추가하려면 다음을 보세요: 사용자 정의 요소.