Entityqueue
ドラッグ&ドロップによる並べ替えと Views との深い統合により、あらゆるエンティティタイプの手動で順序付けされたリスト(キュー)を作成できます。
entityqueue
インストール
composer require 'drupal/entityqueue:8.x-1.10'
composer require 'drupal/entityqueue:8.x-1.7'
概要
Entityqueue モジュールは、エンティティの任意の順序付きリストを作成するための強力なシステムを提供します。サイト構築者は、コンテンツノード、ユーザー、タクソノミーターム、メディアアイテム、その他あらゆるエンティティタイプを保持するキューを作成できます。各キューはエンティティ参照を使用して実装され、キュー内のアイテムはドラッグ&ドロップインターフェースで手動で並べ替えできます。
このモジュールは2つのカスタムエンティティタイプを導入します:Entity Queue(キュー構造を定義する設定エンティティ)と Entity Subqueue(実際のキューアイテムを保持するコンテンツエンティティ)。このアーキテクチャは、シンプルな単一リストのキューと複雑なマルチサブキューのシナリオの両方をサポートします。
Entityqueue は広範な Views 統合を提供し、リレーションシップハンドラー、フィルター、ソート条件を通じて、エディターが定義した正確な順序でキューコンテンツを表示できます。このモジュールはコンテキストリンクシステムとも統合され、Settings Tray モジュールが有効な場合はオフキャンバス編集もサポートします。
プラグインベースのキューハンドラーシステムにより拡張性が確保されており、Simple キュー(1つの固定サブキュー)、Multiple サブキュー(ユーザーが作成するサブキュー)、Smart キュー(同梱のサブモジュールで提供される、エンティティ参照に基づく自動化されたサブキュー)のビルトインサポートがあります。このモジュールは Workspaces によるコンテンツステージングワークフローもサポートしています。
Features
- あらゆるエンティティタイプ(ノード、ユーザー、タクソノミーターム、メディアなど)の順序付きキューを作成
- AJAX サポート付きのドラッグ&ドロップインターフェースでキューアイテムを並べ替え
- オプションの自動切り詰めを含む、設定可能な最小・最大キューサイズ
- 複数のキューハンドラーをサポート:Simple キュー(単一の固定サブキュー)、Multiple サブキュー(無制限のユーザー作成サブキュー)、Smart キュー(自動化されたサブキュー)
- キューコンテンツを表示するためのリレーションシップ、フィルター、ソート、フィールドハンドラーによる深い Views 統合
- Views 表示から直接キューアイテムをすばやく編集するためのコンテキストリンク
- 完全なコンテンツモデレーションサポートを備えたリビジョン可能で翻訳可能なサブキュー
- 自動化されたキュー操作のための Rules モジュールとの統合
- イベント駆動型キュー条件のための ECA モジュールとの統合
- 一括操作(キューへのアイテム追加/削除)のための Drupal Core Actions 統合
- キュー操作のためのキューごとのきめ細かいパーミッション
- 各コンテンツアイテムで利用可能なキューを表示するエンティティタブ統合
- Drupal 7 Entityqueue モジュールからのマイグレーションサポート
- コンテンツステージングワークフローのための Workspaces サポート
- Settings Tray モジュール統合によるオフキャンバス編集サポート
Use Cases
注目コンテンツスライダー
ノード用の Simple キューを作成し、そのキューに限定した Entityqueue リレーションシップを持つ View を作成します。Queue Position ソートを追加してスライドショーとして表示します。エディターはドラッグ&ドロップでコンテンツの順序を変更できます。
カテゴリベースの注目記事
Smartqueue サブモジュールを使用してタクソノミータームに基づくキューを作成します。各カテゴリタームに自動的に専用のサブキューが作成され、エディターは各カテゴリ内で特定の記事を注目させることができます。
セクション別編集者のおすすめ
Multiple サブキューサポートを持つキューを作成します。ホームページ、スポーツ、政治などの個別のサブキューを作成します。サブキューフィルター付きの Views を使用して、サイトの各セクションに適切なコンテンツを表示します。
自動コンテンツローテーション
Rules または ECA と組み合わせて、条件に基づいて新しいコンテンツを自動的にキューに追加し、cron ジョブでシャッフルアクションを使用して注目コンテンツを毎日ランダム化します。
イベントスケジュール管理
「キューとして動作」を有効にし、最大サイズを設定したキューを作成します。新しいイベントが追加されると、古いイベントが自動的に注目リストから削除され、固定サイズの今後のイベント表示を維持します。
ユーザー固有の読書リスト
ノード用の Multiple サブキューキューを作成します。プログラムでユーザーごとにサブキューを作成し、パーソナライズされた読書リストやブックマークを実現します。
Tips
- Views でキューコンテンツを表示する際は常に Queue Position ソートを追加してください。そうしないとアイテムはデフォルトの順序で表示されます。
- 最大サイズ付きの「キューとして動作」設定を使用すると、手動でクリーンアップせずに固定長のキューを自動的に維持できます。
- 大きなキューの場合、フィルタリングされたエンティティオートコンプリートを提供する Views 選択ハンドラーの使用を検討してください。
- コンテキストリンク機能には、コア Contextual Links モジュールと「コンテキストリンクにアクセス」パーミッションが必要です。
- Workspaces を使用する場合、キューの変更はステージングされ、ワークスペースがデプロイされたときにのみ公開されます。
- Simple キューは基本的な注目コンテンツのニーズに最も早くセットアップできます。カテゴリ化が必要な場合にのみ Multiple サブキューを使用してください。
- dragtable ウィジェットは、現在のユーザーが表示できないエンティティに対してアクセス制限メッセージを表示しますが、キューは正常に機能します。
Technical Details
Admin Pages 5
/admin/structure/entityqueue
すべてのエンティティキューを一覧表示するメイン管理ページ。キューは有効と無効のセクションに分けて整理されています。各キューには名前、対象エンティティタイプ、キュータイプ(ハンドラー)、アイテム数が表示されます。操作には設定、アイテム編集(Simple キューの場合)、有効化/無効化、削除があります。
/admin/structure/entityqueue/add
新しいエンティティキューを作成するフォーム。キュー名、タイプ、対象エンティティ設定、キュー動作オプションを設定します。
/admin/structure/entityqueue/{entity_queue}
既存のエンティティキューの設定を編集します。作成後に固定されるマシン名と対象エンティティタイプを除き、ほとんどの設定を変更できます。
/admin/structure/entityqueue/{entity_queue}/{entity_subqueue}
サブキュー内のアイテムを編集します。アイテムの並べ替え用のドラッグ&ドロップインターフェース、新しいアイテムを追加するオートコンプリートフィールド、一括操作用のボタン(逆順、シャッフル、クリア)を提供します。各アイテムには削除ボタンとオプションで編集リンクが表示されます。
/admin/structure/entityqueue/{entity_queue}/list
Multiple サブキューサポートを持つキューに属するすべてのサブキューを一覧表示します。サブキューのタイトルと操作(編集、削除)を表示します。
権限 6
Hooks 6
hook_entity_field_access
サブキュータイトルフィールドへのアクセスを制御します。自動化されたサブキュー(Simple および Smart キューハンドラー)を持つキューのタイトル編集を防止します。
hook_views_pre_render
entityqueue リレーションシップを使用する Views にコンテキストリンクを追加し、View から直接サブキューアイテムを編集するためのクイックアクセスを可能にします。
hook_contextual_links_view_alter
Settings Tray モジュールが有効な場合、entityqueue コンテキストリンクをオフキャンバスダイアログを使用するように変更します。
hook_entity_delete
削除されたエンティティを参照するすべてのサブキューから自動的に削除します。
hook_views_query_alter
Workspaces 内で entityqueue リレーションシップを適切に処理するように Views クエリを変更します。
hook_views_data_alter
キューが定義されているすべてのエンティティタイプに entityqueue 固有の Views ハンドラー(リレーションシップ、フィルター、ソート、フィールド)を追加します。
Troubleshooting 5
View に Entityqueue リレーションシップと Queue Position ソートの両方が追加されていることを確認してください。ソートは entityqueue リレーションシップを使用する必要があります。
キューのエンティティ設定で正しい対象タイプとバンドルが設定されていることを確認してください。また、ユーザーがエンティティを表示するパーミッションを持っていることを確認してください。
キューには最小または最大サイズの制約があります。最小を満たすためにアイテムを追加するか、「キューとして動作」を有効にして余分なアイテムを自動的に削除してください。
Contextual Links モジュールを有効にし、「コンテキストリンクにアクセス」パーミッションを付与し、View 表示設定で「管理リンクを表示」が有効になっていることを確認してください。
「キューとして動作」が最大サイズ付きで有効になっているか確認してください。これにより、制限を超えるとアイテムが自動的に削除されます。また、参照されたエンティティが削除されていないか確認してください。
Security Notes 3
- 「Entityqueue を管理」パーミッションは制限付きであり、すべてのキューを完全に制御できます - 慎重に割り当ててください。
- キューごとのパーミッションにより、完全な管理アクセスなしでコンテンツエディターにきめ細かいアクセス制御が可能です。
- キュー操作パーミッションは基礎となるエンティティへのアクセスを付与しません - ユーザーはキューコンテンツの表示/編集アクセスが引き続き必要です。