---
url: 'https://dxpr.com/ja/hc/documentation/learn-dxpr-builder/development/hooks-api'
title: 'Hooks APIリファレンス | DXPR'
author:
  name: Jurriaan
  url: 'https://dxpr.com/users/jurriaan'
date: '2026-10-24T11:28:12+00:00'
copyright: 'Copyright DXPR. All rights reserved.'
type: article
summary: 'DXPR Builderには5つのフックがあります。すべて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-24T11:28:12+0000'
  'image:alt': 'DXPR, powered by Drupal: AI-powered Drupal for marketers.'
schema:
  '@context': 'https://schema.org'
  '@graph':
    -
      mainEntity: {  }
    -
      '@type': TechArticle
      headline: 'Hooks APIリファレンス'
      description: 'DXPR Builderには5つのフックがあります。すべて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-24T11:28:12+0000'
      dateModified: '2026-10-24T11:28:12+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/ja/hc/documentation/learn-dxpr-builder/development/hooks-api'
      articleSection: 'Architectuur en API’s'
    -
      '@type': WebPage
      '@id': 'https://dxpr.com/ja/hc/documentation/learn-dxpr-builder/development/hooks-api'
      description: 'DXPR Builderには5つのフックがあります。すべてdxpr_builder.api.phpに例付きで記載されています。'
      breadcrumb:
        '@type': BreadcrumbList
        itemListElement:
          -
            '@type': ListItem
            position: 1
            name: ホーム
            item: 'https://dxpr.com/ja'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
      inLanguage: ja
---
[Help Center](/ja/node/75)/[Documentation](/ja/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) # Hooks APIリファレンス.

 Learn DXPR BuilderExtendArchitectuur en API’s

   ## In this guide

 Related guides

- [権限](/ja/hc/documentation/learn-dxpr-builder/development/permissions)
- [APIリファレンス](/ja/hc/documentation/learn-dxpr-builder/development/api)

DXPR Builderには5つのフックがあります。すべて`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`(配列)。キーは1つのクラス名、またはスペース区切りの複数。値はラベルです。`optgroup-`で始まるキーはオプショングループを開始します。

配列には`dxpr_builder_classes`を`.info.yml`に設定しているすべての有効テーマのクラスがすでに入っているため、テーマにPHPは不要です。詳しくは[ユーティリティクラス](/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の組み込みセットは[カスタムアイコンセット](/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()`を呼び出すものがないため、このフックは実行されません。エレメントの登録は行いません。追加するには[カスタムエレメント](/hc/documentation/learn-dxpr-builder/development/custom-elements)をご覧ください。

## 次のステップ

- [権限](/hc/documentation/learn-dxpr-builder/development/permissions)：モジュールが定義する権限について。
- [APIリファレンス](/hc/documentation/learn-dxpr-builder/development/api)：サービスとルートについて。