Entityqueue Form Widget
ノードの追加・編集フォームのサイドバーにEntityqueueウィジェットを追加し、エディターがコンテンツを直接キューに追加・削除できるようにするモジュール。
entityqueue_form_widget
インストール
composer require 'drupal/entityqueue_form_widget:^2.0'
概要
Entityqueue Form Widgetは、Drupalのコンテンツ管理ワークフローを効率化するモジュールです。通常、コンテンツをEntityqueueに追加するには、コンテンツを作成した後に別のキュー管理ページに移動する必要がありましたが、このモジュールを使用すると、ノードの作成・編集フォームの右サイドバーに直接キュー割り当てウィジェットが表示されます。
エディターはコンテンツを編集しながら、同時にどのキューに含めるかをチェックボックスで簡単に選択できます。これにより、コンテンツ作成とキュー管理が一つのフォームで完結し、作業効率が大幅に向上します。複数のキューへの同時割り当ても可能で、コンテンツを保存するだけで自動的にキューへの追加・削除が行われます。
また、Drupal Schedulerモジュールのpublish_onフィールドとの連携もサポートしており、予約投稿されるコンテンツも適切にキューに追加されます。非公開のコンテンツは自動的にキューから除外される仕組みになっています。
Features
- ノード作成・編集フォームのサイドバーにEntityqueueウィジェットを自動表示
- チェックボックスによる直感的なキュー割り当てUI
- 複数のキューへの同時割り当てが可能
- コンテンツ保存時に自動的にキューへの追加・削除を実行
- キューの現在のアイテム数と最大サイズを表示
- キューが満杯の場合はチェックボックスを自動的に無効化
- Entityqueueモジュールのパーミッションシステムと連携したアクセス制御
- 予約投稿(publish_onフィールド)との連携をサポート
- 非公開コンテンツのキューからの自動除外
- 複数サブキューを持つキュー(Multiple handler)への対応
Use Cases
フィーチャーコンテンツの管理
ニュースサイトやブログで、特定の記事をホームページやカテゴリページのフィーチャーセクションに表示する場合に使用します。「ホームページフィーチャー」「カテゴリフィーチャー」「トレンド」などのキューを作成し、エディターが記事作成時に直接チェックボックスでフィーチャー状態を設定できます。
ECサイトの商品キュレーション
ECサイトで「スタッフおすすめ」「セール商品」「季節のコレクション」などの商品コレクションを管理する場合に使用します。商品ノードの編集時に、どのコレクションに含めるかを一括で指定でき、プロモーション管理が効率化されます。
ブログのカテゴリ別キュレーション
複数のトピックカテゴリを持つブログで、各カテゴリのフィーチャー記事を管理します。「開発フィーチャー」「デザインフィーチャー」「ビジネスフィーチャー」などのキューを作成し、著者やエディターが記事を適切なカテゴリのフィーチャーに追加できます。
オンボーディングコンテンツの構成
SaaSサービスのヘルプセンターで、ユーザーの習熟度別にドキュメントを整理する場合に使用します。「入門」「基本機能」「応用機能」「トラブルシューティング」などのキューを作成し、各ドキュメントを適切なキューに配置してガイド付き学習体験を提供できます。
イベント関連コンテンツの一括管理
カンファレンスサイトで、スピーカー紹介、セッション情報、スポンサー情報などのイベント関連コンテンツを管理します。イベントごとにキューを作成し、関連するすべてのコンテンツを簡単にグループ化できます。イベント終了後はキューをアーカイブすることで履歴も保持できます。
編集カレンダーの管理
出版社やメディアサイトで、週ごとの公開予定コンテンツを管理する編集カレンダーとして使用します。「1月第1週」「1月第2週」などの時間ベースのキューを作成し、コンテンツマネージャーが記事を適切な週に割り当てることで、計画的なコンテンツ公開が可能になります。
Tips
- キューには明確で説明的な名前を付けましょう(例:「Featured」ではなく「Homepage Featured Articles」)
- 1つのコンテンツタイプに対して表示されるキュー数は5-10個程度に抑えるとエディターの判断が容易になります
- 定期的にキューの内容を監査し、古くなったコンテンツを削除しましょう
- 各キューの目的を文書化し、編集チーム全体で共有しましょう
- 使用しなくなったキューは削除せず「ARCHIVE:」プレフィックスを付けて無効化することで、データを保持できます
- キューの並び替えはウィジェットではできないため、/admin/structure/entityqueue/[queue]のドラッグ&ドロップで行ってください
Technical Details
Hooks 1
hook_form_node_form_alter
ノードの追加・編集フォームにEntityqueueウィジェットを追加するために使用。対象ノードタイプに関連するすべてのEntityqueueを取得し、チェックボックス形式でサイドバーに表示します。フォーム送信時にはキューへの追加・削除処理を実行するカスタムサブミットハンドラーも登録します。
Troubleshooting 5
1) Entityqueueモジュールが有効になっているか確認 2) /admin/structure/entityqueueで少なくとも1つのキューが存在するか確認 3) キューのTarget bundlesが編集中のコンテンツタイプを含んでいるか確認 4) ユーザーに「update [queue] entityqueue」または「manipulate all entityqueues」パーミッションがあるか確認 5) drush crでキャッシュをクリア
キューが最大サイズに達しており、かつ「Act as queue」設定が無効になっている可能性があります。キュー管理画面で既存のアイテムを削除するか、キューの最大サイズを増やしてください。
1) ユーザーに適切なサブキュー編集パーミッションがあるか確認 2) フォーム送信時にバリデーションエラーが発生していないか確認 3) ノード自体の編集権限があるか確認 4) ブラウザの開発者ツールでJavaScriptエラーがないか確認
コンテンツを非公開にした後、そのコンテンツを編集して保存すると、自動的にすべてのキューから削除されます。手動でキューを更新する場合は、コンテンツを編集して保存し直してください。
1) 1つのコンテンツタイプに対するキュー数を5-10個程度に制限 2) 使用していないキューをアーカイブまたは無効化 3) キューのTarget bundlesを適切に設定して、必要なコンテンツタイプのみに表示 4) Drupalのキャッシュを有効化
Security Notes 3
- ウィジェットの表示はEntityqueueモジュールのパーミッションシステムに完全に依存しています
- 「manipulate all entityqueues」パーミッションは信頼できるユーザーにのみ付与してください
- 各キューごとに個別のパーミッションを設定することで、きめ細かいアクセス制御が可能です