---
url: 'https://dxpr.com/ko/hc/documentation/learn-dxpr-builder/development/hooks-api'
title: '후크 API 참조 | DXPR'
author:
  name: Jurriaan
  url: 'https://dxpr.com/users/jurriaan'
date: '2026-10-24T01:40:24+00:00'
updated: '2026-10-24T09:09:48+00:00'
copyright: 'Copyright DXPR. All rights reserved.'
type: article
summary: |-
  DXPR Builder에는 다섯 후크가 있습니다. dxpr_builder.api.php에 다섯
  전부가 예와 함께 설명되어 있습니다.
tags:
  - 'Architectuur en API’s'
image: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
published: true
og:
  site_name: DXPR
  updated_time: '2026-10-24T09:09:48+0000'
  'image:alt': 'DXPR, powered by Drupal: AI-powered Drupal for marketers.'
schema:
  '@context': 'https://schema.org'
  '@graph':
    -
      mainEntity: {  }
    -
      '@type': TechArticle
      headline: '후크 API 참조'
      description: |-
        DXPR Builder에는 다섯 후크가 있습니다. dxpr_builder.api.php에 다섯
        전부가 예와 함께 설명되어 있습니다.
      image:
        '@type': ImageObject
        url: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
        width: '1200'
        height: '630'
      datePublished: '2026-10-24T01:40:24+0000'
      dateModified: '2026-10-24T09:09:48+0000'
      author:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
        url: 'https://dxpr.com/'
        logo:
          '@type': ImageObject
          url: 'https://dxpr.com/themes/custom/dxpr_com/dxpr-logo-dark.svg'
          width: '1348'
          height: '501'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
        url: 'https://dxpr.com/'
        logo:
          '@type': ImageObject
          url: 'https://dxpr.com/themes/custom/dxpr_com/dxpr-logo-dark.svg'
          width: '1348'
          height: '501'
      mainEntityOfPage: 'https://dxpr.com/ko/hc/documentation/learn-dxpr-builder/development/hooks-api'
      articleSection: 'Architectuur en API’s'
    -
      '@type': WebPage
      '@id': 'https://dxpr.com/ko/hc/documentation/learn-dxpr-builder/development/hooks-api'
      description: |-
        DXPR Builder에는 다섯 후크가 있습니다. dxpr_builder.api.php에 다섯
        전부가 예와 함께 설명되어 있습니다.
      breadcrumb:
        '@type': BreadcrumbList
        itemListElement:
          -
            '@type': ListItem
            position: 1
            name: 홈
            item: 'https://dxpr.com/ko'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
      inLanguage: ko
---
[Help Center](/ko/node/75)/[Documentation](/ko/hc/documentation) /[Learn DXPR Builder](/hc/documentation/learn-dxpr-builder) /[Extend](/hc/documentation/learn-dxpr-builder/extend) /[Architectuur en API’s](/hc/documentation/learn-dxpr-builder/extend/architecture) # 후크 API 참조.

 Learn DXPR BuilderExtendArchitectuur en API’s

   ## In this guide

 Related guides

- [권한](/ko/hc/documentation/learn-dxpr-builder/development/permissions)
- [API 참조](/ko/hc/documentation/learn-dxpr-builder/development/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()`인 함수는 호출되지 않습니다.

```php
/**
 * 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가 필요 없습니다. [유틸리티 클래스](/ko/hc/documentation/learn-dxpr-builder/customization/utility-classes)를 보세요.

## hook\_dxpr\_builder\_icon\_sets\_alter

모듈이 활성화된 모듈과 테마의 모든 `*.dxpr_icon_sets.yml` 파일을 병합한 뒤에 실행됩니다. YAML 파일을 우선 쓰세요. 목록이 런타임 로직에 의존하면 후크를 쓰세요.

```php
/**
 * 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가지 내장 세트는 [사용자 정의 아이콘 세트](/ko/hc/documentation/learn-dxpr-builder/development/icon-sets)에 나열되어 있습니다.

## hook\_dxpr\_builder\_view\_elements

다음 끝에서 `invokeAll()`(로) 호출됩니다: `DxprBuilderFormatter::viewElements()`. 포매터가 라이브러리, 설정, 프로필을 붙인 뒤. `$element`(은)는 필드의 렌더 배열이며 참조로 전달됩니다. 편집자 여부에 관계없이 모든 보는 사람에게 실행됩니다.

```php
/**
 * 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()`를 호출하는 곳이 없으므로 후크가 실행되지 않습니다. 요소를 등록하지 않습니다. 추가하려면 다음을 보세요: [사용자 정의 요소](/ko/hc/documentation/learn-dxpr-builder/development/custom-elements).

## 다음 단계

- [권한](/ko/hc/documentation/learn-dxpr-builder/development/permissions). 모듈이 정의하는 권한에 대한 내용.
- [API 참조](/ko/hc/documentation/learn-dxpr-builder/development/api). 서비스와 경로에 대한 내용.