Webform Content Creator
Webform送信に基づいてコンテンツEntityを自動作成・同期し、フィールドマッピングを柔軟に設定できます。
webform_content_creator
インストール
composer require 'drupal/webform_content_creator:^4.0'
概要
Webform Content Creatorは、Webformが送信された際にコンテンツEntityを自動作成する強力なDrupalモジュールです。管理者がWebform送信値とコンテンツEntityフィールド間のマッピングを定義できる柔軟な設定インターフェースを提供します。
このモジュールはDrupalの任意のコンテンツEntityタイプ(Node、カスタムEntityなど)をサポートし、双方向の同期機能を提供します。Webform送信が編集または削除された場合、対応するコンテンツEntityを自動的に更新または削除できます。また、Webform Encryptモジュールと統合して、暗号化されたフィールド値を透過的に処理します。
フィールドマッピングでは、直接のWebformフィールド値またはToken置換を使用したカスタムテキストのいずれかを使用でき、フォーム送信からコンテンツを生成する方法を管理者が完全に制御できます。
Features
- Webform送信をトリガーとしたコンテンツEntityの自動作成
- 任意のDrupalコンテンツEntityタイプ(Node、カスタムEntityなど)をサポート
- WebformエレメントとEntityフィールド間の設定可能なフィールドマッピング
- Token置換をサポートしたカスタムテキスト値(webform_submission Token)
- 双方向同期:Webform送信が編集されるとコンテンツを更新
- 関連するWebform送信が削除されると自動的にコンテンツを削除
- Webform Encryptモジュールとの統合による暗号化フィールド値の復号化
- 最大長を超えた場合のフィールド値の自動切り詰め(ログ記録付き)
- 日付/日時フィールドタイプの変換とフォーマット
- Entityリファレンスフィールドの検証
- マッピングインターフェースでのWebformエレメントのウィザードページ整理
- AJAX対応のEntityタイプとBundle選択
- 自動クリーンアップ:参照されているWebformまたはEntityタイプが削除されると設定も削除
Use Cases
リード獲得システム
お問い合わせフォームWebformを作成し、訪問者がフォームを送信したときにリードコンテンツEntityを自動生成します。名前、メール、電話番号、メッセージフィールドを対応するコンテンツフィールドにマッピングします。同期機能を使用して、営業スタッフがWebform送信の編集を通じてリードを更新できるようにします。
イベント登録
イベント登録Webformを作成し、参加者コンテンツEntityを自動作成します。登録者の詳細、セッションの希望、食事制限をマッピングします。削除同期を有効にして、登録がキャンセルされると参加者レコードが自動的に削除されるようにします。
サポートチケットシステム
チケットコンテンツEntityを生成するサポートリクエストWebformを作成します。Tokenを使用したカスタムテキストで「[webform_submission:values:category] - [webform_submission:values:subject]」のような構造化されたチケットタイトルを生成します。編集同期を有効にして、ユーザーがWebformを通じてチケットを更新できるようにします。
応募処理
応募コンテンツEntityを作成する求人応募Webformを構築します。応募者情報、履歴書のアップロード、希望職種をマッピングします。暗号化統合を使用して機密性の高い個人データを安全に処理します。
コンテンツ投稿ワークフロー
認証済みユーザーがWebformを通じて記事を投稿し、下書きステータスで記事コンテンツEntityを自動作成できるようにします。Tokenを使用して本文フィールドをマッピングし、送信ユーザーTokenを使用して作成者を設定します。
アンケート回答収集
各送信に対してレスポンスコンテンツEntityを生成するアンケートWebformを作成します。レポートと分析のためにアンケートの回答をカスタムフィールドにマッピングします。シリアル番号Tokenを使用して一意の回答識別子を作成します。
Tips
- 作成の失敗を避けるため、必須のコンテンツフィールドは必ずマッピングしてください
- カスタムテキストで利用可能なwebform_submission Tokenを見つけるには、Tokenブラウザを使用してください
- 同期を使用する場合は、送信IDを保存するための専用フィールドをコンテンツタイプに作成してください
- まずドラフト送信でテストしてください - コンテンツは送信が確定されたときにのみ作成されます
- 一意のコンテンツタイトルには、シリアル番号Tokenの使用を検討してください:[webform_submission:serial]
- 複雑なフィールドマッピングには、複数のTokenを組み合わせたカスタムテキストを使用してください
- 設定でWebform、Entityタイプ、またはBundleを変更すると、すべてのフィールドマッピングがリセットされます - 事前に設定をエクスポートしてください
- モジュールはエラーをDrupalのデータベースログ(dblog)に記録します - トラブルシューティング時は最近のログメッセージを確認してください
Technical Details
Admin Pages 5
/admin/config/webform_content_creator
すべてのWebform Content Creator設定を一覧表示するメイン設定ページ。各設定のタイトル(マシン名付き)、関連するWebform、ターゲットEntityタイプ、Bundleを表示するテーブルを提供します。各設定の編集、削除、フィールドマッピング管理の操作が可能です。
/admin/config/webform_content_creator/add
新しいWebform Content Creator設定を作成するフォーム。WebformとターゲットコンテンツEntityタイプ間の関係を定義します。
/admin/config/webform_content_creator/{webform_content_creator}
既存のWebform Content Creator設定を編集します。注意:Webform、Entityタイプ、またはBundleを変更すると、すべてのフィールドマッピングがリセットされます。
/admin/config/webform_content_creator/manage/{webform_content_creator}/fields
Webform送信値とコンテンツEntityフィールド間のフィールドマッピングを設定します。各行はWebformエレメントまたはTokenを含むカスタムテキストにマッピングできるコンテンツEntityフィールドを表します。
/admin/config/webform_content_creator/{webform_content_creator}/delete
Webform Content Creator設定を削除するための確認フォーム。
権限 1
Hooks 5
hook_webform_submission_insert
ドラフトではないWebform送信が作成されたときにトリガーされます。すべてのWebform Content Creator設定を読み込み、一致するWebformのコンテンツEntityを作成します。
hook_webform_submission_update
Webform送信が更新されたときにトリガーされます。元がドラフトで更新がドラフトでない場合は、新しいコンテンツを作成します。両方がドラフトでなく同期が有効な場合は、既存のコンテンツを更新します。
hook_webform_submission_delete
Webform送信が削除されたときにトリガーされます。削除同期が有効な場合、対応するコンテンツEntityを削除します。
hook_entity_type_delete
Entityタイプ(コンテンツタイプ)が削除されたときにトリガーされます。削除されたEntityタイプを参照するWebform Content Creator設定を削除します。
hook_webform_delete
Webformが削除されたときにトリガーされます。削除されたWebformを参照するすべてのWebform Content Creator設定を削除します。
Troubleshooting 7
以下を確認してください:1)Webform送信がドラフトではない、2)Webform Content Creator設定が存在しWebform IDと一致している、3)必須のコンテンツフィールドがマッピングされている、4)ターゲットEntityタイプとBundleがまだ存在している。エラーについては最近のログメッセージを確認してください。
Webformフィールドタイプはコンテンツフィールドタイプと互換性がある必要があります。メールフィールドはメールコンテンツフィールドにのみマッピングできます。テキストフィールドの場合、テキスト/文字列フィールドタイプにマッピングしていることを確認してください。回避策としてTokenを使用したカスタムテキストを検討してください。
以下を確認してください:1)設定で「編集時に同期」チェックボックスが有効になっている、2)sync_content_fieldが指定されている、3)そのマシン名を持つフィールドがコンテンツタイプに存在する、4)同期フィールドがフィールド管理で送信IDプロパティにマッピングされている。
「削除時に同期」が有効になっているか確認してください。これにより、関連するWebform送信が削除されるとコンテンツも削除されます。コンテンツを独立して保持したい場合は、このオプションを無効にしてください。
設定で「値を復号化」を有効にし、正しい暗号化プロファイルを選択してください。Webform Encryptモジュールがインストールされ、Webformで使用されているのと同じ暗号化プロファイルで適切に設定されていることを確認してください。
これはコンテンツフィールドにmax_length設定があり、値がそれを超えた場合の期待される動作です。切り詰めに関する通知については最近のログメッセージを確認してください。コンテンツフィールドの最大長を増やすか、長いテキストフィールドタイプの使用を検討してください。
Webform Content Creatorは、参照されているWebformまたはEntityタイプ/Bundleが削除されると、設定を自動的に削除します。これは孤立した設定を防ぐための設計です。
Security Notes 6
- モジュールは管理アクセスに「access webform content creator configuration」権限が必要です
- コンテンツはデフォルトで作成者なしで作成されます - 作成者の帰属が必要な場合はuidフィールドをマッピングしてください
- 暗号化フィールドの復号化には適切な暗号化プロファイル設定が必要です
- 自動作成されたコンテンツに対してコンテンツタイプの権限が適切に設定されていることを確認してください
- sync_content_fieldは、コンテンツ関係の操作を防ぐためにエンドユーザーが編集できないようにする必要があります
- Token値は自動的にサニタイズされません - HTMLをレンダリングするフィールドにマッピングする場合は注意してください