開発者向けサンプル集

開発者が学習できるよう、Drupalのコア API と機能を実演する、充実したドキュメント付きサンプルモジュールの包括的なコレクションです。

examples
1,022 sites
143
drupal.org

インストール

Drupal 11, 10, 9 v4.0.4
composer require 'drupal/examples:^4.0'

概要

Examples for Developers プロジェクトは、Drupal の機能と API を実演することを目的とした、動作するサンプルモジュール一式を提供します。各サブモジュールはシンプルで、詳細なドキュメントが付いており、変更しやすいように設計されており、開発者が Drupal の内部動作を素早く理解できるよう支援します。

このプロジェクトは、Form API、Field API、Entity API、Render API、Plugin API、Database API(DBTNG)、Cache API、Queue API、File API、REST API、Events、Hooks、テーマ、JavaScript 統合など、幅広い Drupal コア機能をカバーしています。本番環境向けのソリューションを提供するのではなく、これらのモジュールは豊富なインラインドキュメントとコードコメントを備えた教育リソースとして機能します。

有効化すると、親モジュールはツールバーに「Examples」項目を追加し、有効化されているすべてのサンプルサブモジュールへのクイックアクセスを提供します。各サンプルモジュールには通常、その目的を説明する説明ページとデモページへのリンクが含まれています。

Features

  • 主要な Drupal API を実演する 33 個の独立したサンプルサブモジュール
  • 有効化されているすべてのサンプルへのクイックナビゲーションを提供するツールバー統合
  • AJAX フォーム、マルチステップフォーム、モーダルダイアログを含む包括的な Form API サンプル
  • RGB カラー値用のカスタムフィールドタイプ、ウィジェット、フォーマッタを使用した Field API デモ
  • 完全な CRUD 操作を備えた Config Entity と Content Entity の作成サンプル
  • 空のブロック、設定可能なテキストブロック、大文字変換ブロックを含む Block プラグインサンプル
  • クエリ、挿入、更新、高度な操作のための Database API(DBTNG)サンプル
  • 適切なキャッシュ使用パターンを示す Cache API デモ
  • キューワーカーを使用した Queue API と Cron hook のサンプル
  • イベントのディスパッチとサブスクライブのための Event システムサンプル
  • カスタム hook の定義と呼び出しを含む Hook 実装サンプル
  • Sandwich プラグインを使用したカスタム Plugin タイプ定義サンプル
  • カスタム URI スキームのための Stream wrapper 実装サンプル
  • hook_mail と hook_mail_alter を使用したメール送信と変更のサンプル
  • リモート Drupal インスタンスとの通信のための REST クライアントサンプル
  • render array と alter hook を実演する Render API サンプル
  • カスタムテンプレートと preprocess 関数を使用したテーマサンプル
  • ライブラリ定義と Drupal behaviors を使用した JavaScript 統合サンプル
  • インタラクティブなテーブルインターフェースのための Tabledrag と Tablesort サンプル
  • 長時間実行操作のための Batch API サンプル
  • ページネーション付きコンテンツ表示のための Pager サンプル
  • ユーザーセッションストレージを実演する Session 処理サンプル
  • カラー化機能を備えた Image effect プラグインサンプル
  • Node アクセスとフィールドパーミッションのサンプル
  • PHPUnit テストフレームワークのサンプル

Use Cases

Drupal の Form API を学ぶ

開発者は form_api_example を有効にして、様々なフォーム要素、AJAX フォーム、マルチステップフォーム、モーダルダイアログの動作する実装を見ることができます。豊富なインラインコメントが各 Form API 機能を説明しています。

カスタムフィールドタイプの作成

field_example モジュールは、複数のウィジェットバリアントとフォーマッタを持つカスタムフィールドタイプ(RGB カラー)を作成する完全なプロセスを実演します。開発者はこれを独自のフィールド実装のテンプレートとして使用できます。

カスタムエンティティの実装

config_entity_example(Robot)と content_entity_example(Contact)モジュールは、フォーム、リストビルダー、アクセス制御、管理インターフェースを備えた両方のエンティティタイプの完全な動作サンプルを提供します。

Plugin システムの理解

plugin_type_example は、プラグインマネージャー、ディスカバリー、アノテーションを備えたカスタムプラグインタイプ(Sandwich)の作成を実演します。block_example と field_example と組み合わせることで、開発者は完全なプラグインエコシステムを学べます。

DBTNG によるデータベース操作

dbtng_example モジュールは、生の SQL クエリを書かずに挿入、更新、選択、複雑な結合操作を行う適切な Database API の使用法を示します。

イベント駆動アーキテクチャ

events_example は Drupal での Symfony event dispatcher パターンを実演し、疎結合なコードアーキテクチャのためのイベントの作成、ディスパッチ、サブスクライブ方法を示します。

Cron とキュー処理

cron_example と queue_example の組み合わせ使用は、ユーザーリクエストをブロックすべきでない長時間実行タスクのバックグラウンド処理パターンを実演します。

カスタム Stream Wrapper

stream_wrapper_example は、代替ファイルストレージバックエンド用のカスタム URI スキーム(session://)の実装方法を示します。

REST API 統合

rest_example はリモート Drupal インスタンスとの通信方法を実演する動作する REST クライアントを提供し、ヘッドレス Drupal 実装に役立ちます。

Drupal Hooks の理解

hooks_example モジュールは、既存の hook の実装、alter パターンを持つカスタム hook の定義、hook の呼び出しを実演します。これは Drupal の拡張性モデルの基本です。

Tips

  • 複雑さを軽減するため、すべてを一度に有効にするのではなく、学習したい特定のサンプルモジュールのみを有効にしてください。
  • インラインコードコメントを広く読んでください。コードが何をするかだけでなく、なぜ特定のパターンが使用されるかを説明しています。
  • すべてのサンプルの相互参照された HTML ドキュメントについては api.drupal.org/api/examples の API ドキュメントを使用してください。
  • 変更が動作にどのように影響するかを理解するため、サンプルコードを変更して実験してください。サンプルは変更しやすいように設計されています。
  • カスタム hook とプラグインの定義に関するドキュメントについては、hooks_example と plugin_type_example の *.api.php ファイルを確認してください。
  • ユニットテスト、カーネルテスト、ファンクショナルテストを含む適切なテスト記述パターンを学ぶために testing_example モジュールを使用してください。
  • batch_example は、大規模なデータセットを処理するインポート/マイグレーション機能を構築する際に特に役立ちます。
  • REST API 開発については、rest_example が外部 Drupal サイトとの通信のための完全なクライアント実装パターンを提供します。

Technical Details

Admin Pages 35
AJAX サンプル /examples/ajax-example

最もシンプルな例、送信駆動 AJAX、依存ドロップダウン、動的フォームセクション、ウィザードフォームを含む様々な AJAX フォームデモへのリンク付き概要ページ。

バッチ処理デモ /examples/batch_example

バッチサイズの選択とバッチ処理の実行オプションを備えたバッチ操作を実演するフォーム。

Block サンプル /examples/block-example

ブロック作成についての説明と、サンプルブロックを配置できるブロック管理ページへのリンク付き概要ページ。

Cache サンプル /examples/cache-example

キャッシュデータの保存、取得、クリアを含むキャッシュ操作を実演するフォーム。

Config Entity サンプル /examples/config-entity-example

Robot 設定エンティティの追加、編集、削除オプション付きで全ての Robot 設定エンティティを表示するリストページ。

Config Simple Example 設定 /admin/config/form-api-example/config-simple-form

シンプルな翻訳可能な設定ストレージを実演する設定フォーム。

Contact 一覧 /content_entity_example_contact/list

Contact の追加、編集、表示、削除オプション付きで全ての Contact コンテンツエンティティを表示するリストページ。

Contact 設定 /admin/structure/content_entity_example_contact_settings

Contact エンティティタイプ設定の設定ページ。

Cron サンプル /examples/cron-example

間隔設定と手動 cron 実行による cron 機能テストのフォーム。

DBTNG サンプル /examples/dbtng-example

追加、更新、高度なクエリのサブページ付きでデータベースエントリを表示する概要ページ。

エントリを追加 /examples/dbtng-example/add

挿入操作を実演する新しいデータベースエントリ追加フォーム。

Email サンプル /examples/email-example

hook_mail 実装を実演するテストメール送信フォーム。

Events サンプル /examples/events-example

設定可能なイベントタイプによるイベントのディスパッチとサブスクリプションを実演するフォーム。

Field サンプル /examples/field-example

コンテンツタイプ設定へのリンク付きで RGB カラーフィールド実装を説明する概要ページ。

Field Permission サンプル /examples/field-permission-example

権限設定へのリンク付きでフィールドレベル権限を説明する概要ページ。

File サンプル /examples/file_example

異なる stream wrapper 間でのファイルの読み取り、書き込み、管理を含む File API 操作を実演するフォーム。

Form API サンプル /examples/form-api-example

シンプルなフォーム、入力要素、コンテナ、AJAX、モーダルを含む様々な Form API デモへのリンク付き概要ページ。

Hooks サンプル /examples/hooks-example

hook_node_view と hook_form_alter のデモへのリンク付きで hook 実装を説明する概要ページ。

Image サンプル /examples/image-example/styles

カラーピッカー付きのカスタム colorize エフェクトを含む画像エフェクトテストフォーム。

JavaScript サンプル /examples/js-example

色/重み付けとアコーディオンサンプルを含む JavaScript デモへのリンク付き概要ページ。

Menu サンプル /examples/menu-example

制限付きアクセス、タブ、URL 引数、コールバックを含む様々なメニューサンプルへのリンク付きでメニューシステム機能を実演する概要ページ。

Node Type サンプル /examples/node-type-example

コンテンツタイプ管理へのリンク付きで設定によるノードタイプ作成を説明する概要ページ。

Page サンプル /examples/page-example

シンプルなページと引数ページサンプルへのリンク付きで基本的なページ作成を実演する概要ページ。

Pager サンプル /examples/pager-example

複数ページにわたって大規模なデータセットを表示する方法を示すページネーションテーブルデモ。

Plugin Type サンプル /examples/plugin-type-example

Sandwich プラグインのデモ付きでカスタムプラグインタイプ定義を説明する概要ページ。

Queue サンプル /examples/queue_example

アイテムの追加、要求、キュー処理を含む Queue API 操作を実演するフォーム。

Render サンプル /examples/render-example

render array 構築サンプルと alter hook デモへのリンク付き概要ページ。

REST サンプル: はじめに /examples/rest-getting-started

設定とノード操作へのリンク付きで REST クライアントセットアップを説明する概要ページ。

リモート Drupal サイトに接続 /examples/rest-client-settings

リモート Drupal インスタンスへの REST クライアント接続を設定するフォーム。

Session サンプル /examples/session_example

ユーザーセッションに値を永続化するフィールドを使用したセッションストレージを実演するフォーム。

Stream Wrapper サンプル /examples/stream_wrapper_example

セッションベースのファイルストレージのためのカスタム stream wrapper 実装を説明する概要ページ。

Tabledrag 概要 /examples/tabledrag-example

シンプルな行、ネストされた階層、ルート/リーフパターンを含む様々な tabledrag デモへのリンク付き概要ページ。

TableSort サンプル /examples/tablesort-example

動的ソートのためのクリック可能な列ヘッダーを持つソート可能なテーブルのデモ。

Testing サンプル /examples/testing-example

テストデモとドキュメントへのリンク付きで PHPUnit テストフレームワークを説明する概要ページ。

Theming サンプル /examples/theming_example

リストテーマとフォームテーマサンプルを含むテーマデモへのリンク付き概要ページ。

権限 19
Robot を管理

Robot 設定エンティティの作成と編集。

エンティティコンテンツを削除

Contact コンテンツエンティティを削除する権限。

エンティティコンテンツを追加

新しい Contact コンテンツエンティティを作成する権限。

エンティティコンテンツを表示

Contact コンテンツエンティティを表示する権限。

エンティティコンテンツを編集

Contact コンテンツエンティティを編集する権限。

設定を管理

Contact エンティティ設定を管理する権限。

自分のフィールドノートを表示

自分のコンテンツのフィールドノート値を表示する権限。

自分のフィールドノートを編集

自分のコンテンツのフィールドノート値を編集する権限。

任意のフィールドノートを表示

任意のコンテンツのフィールドノート値を表示する権限。

任意のフィールドノートを編集

任意のコンテンツのフィールドノート値を編集する権限。

フィールドノートフィールドの設定を管理

フィールドノートフィールド設定を構成する権限。

File Example モジュールのサンプルを使用

File Example デモページにアクセスする権限。

File Example モジュールデモでプライベートファイルを表示

File Example デモでプライベートファイルを表示する権限。

File Example モジュールデモで一時ファイルを表示

File Example デモで一時ファイルを表示する権限。

File Example モジュールデモでセッションファイルを表示

File Example デモでセッションファイルを表示する権限。

保護されたメニューサンプルにアクセス

メニューサンプルの制限付きページにアクセスする際のアクセス制御をバイパス。制限付きとしてマークされています。

シンプルページにアクセス

ユーザーがシンプルページデモにアクセスすることを許可。

引数付きページにアクセス

ユーザーが URL 引数デモページにアクセスすることを許可。

任意の Testing Example を特別編集

ユーザーが任意のユーザーが作成した Testing Example コンテンツを編集することを許可。制限付きとしてマークされています。

Hooks 18
hook_toolbar

有効化されているすべてのサンプルモジュールへのリンク付きで Examples ツールバー項目を追加します。

hook_block_view_alter

ブロック出力を変更します。サンプルでは「uppercase」という単語を含むブロックラベルを大文字に変更します。

hook_cron

cron 処理を実装します。指定された間隔でバックグラウンドタスクを実行します。

hook_mail

メールテンプレートを定義します。メールキーに基づいてメッセージの件名と本文を設定します。

hook_mail_alter

送信メールを変更します。すべてのメールメッセージにサイト署名を追加します。

hook_entity_field_access

操作、フィールド定義、アカウント、エンティティ所有権に基づいてフィールドアクセス権限を制御します。

hook_file_download

ファイルダウンロード権限を制御します。プライベート、一時、またはセッションファイルのユーザー権限をチェックします。

hook_help

admin/help ページに表示されるモジュールヘルプテキストを提供します。

hook_node_view

ノード表示を処理します。セッションでノード閲覧数を追跡し、カスタム hook を呼び出します。

hook_form_alter

フォームを変更します。サンプルではユーザーログインフォームを変更してユーザー名フィールドの説明を変更します。

hook_hooks_example_count_incremented

モジュールが独自の hook を定義して呼び出す方法を実演するカスタム hook 実装。

hook_image_effect_info_alter

画像エフェクト情報を変更します。画像エフェクトの説明を変更します。

hook_theme

テンプレートと変数を含むテーマ実装を定義します。

hook_preprocess_page

ページ render array を前処理します。パンくずリストの移動、サイドバーの反転、デバッグ情報の表示が可能です。

hook_preprocess_block

ブロック render array を前処理します。追加のマークアップでブロックをラップできます。

hook_preprocess_form_element_label

フォーム要素ラベルを前処理します。データ属性に基づいて強調書式を追加します。

hook_node_access

ノードアクセス制御。権限と作成者に基づいて更新/削除操作を制限します。

hook_sandwich_info_alter

Sandwich プラグイン定義のカスタム alter hook。プラグインの説明を変更します。

Troubleshooting 6
Examples メニューがツールバーに表示されない

親モジュール「Examples for Developers」が有効になっていることを確認してください。Toolbar モジュールは必須の依存関係として有効になっている必要があります。

サンプルページで権限拒否エラー

ユーザーが適切な権限を持っていることを確認してください。多くのサンプルページには 'access content' 権限が必要で、エンティティサンプルには 'administer robots' や 'view contact entity' などの特定の権限が必要です。

AJAX サンプルが動作しない

ブラウザで JavaScript が有効になっていることを確認してください。一部の AJAX サンプルにはグレースフルデグラデーションを実演する 'nojs' バリアントがあります。ブラウザコンソールで JavaScript エラーを確認してください。

REST サンプルがリモートサイトに接続できない

リモート Drupal サイトで REST と HAL モジュールが適切な認証で有効になっていることを確認してください。REST サンプルが動作するには、リモートサイトが Basic Auth を許可している必要があります。

カスタムフィールドが Field UI に表示されない

field_example を有効にした後、キャッシュをクリアしてください。RGB フィールドタイプは、コンテンツタイプにフィールドを追加するときに表示されるはずです。

画像 colorize エフェクトが表示されない

colorize エフェクトには imagefilter() 関数を持つ PHP GD ライブラリが必要です。PHP 設定を確認し、GD 拡張がロードされていることを確認してください。

Security Notes 4
  • これらのサンプルは開発サイトでの学習目的を意図しています。一部のサンプルは、本番使用には追加のセキュリティ強化が必要な簡略化されたパターンを意図的に実演しています。
  • REST サンプルは設定に認証情報を保存します。本番環境では、より安全な認証情報保存メカニズムを使用してください。
  • Field permission サンプルは、機密データを持つカスタムフィールドを作成する際に適用すべき適切なフィールドレベルアクセス制御パターンを実演しています。
  • file_example は stream wrapper アクセス制御を実演しています。カスタム stream wrapper を作成する際は常に適切なアクセスチェックを実装してください。