Replicate UI
Replicateモジュールのユーザーインターフェースを提供し、ローカルタスク、エンティティ操作、一括アクションを通じてコンテンツの複製を可能にします。
replicate_ui
インストール
composer require 'drupal/replicate_ui:8.x-1.2'
composer require 'drupal/replicate_ui:8.x-1.1'
composer require 'drupal/replicate_ui:8.x-1.0'
概要
Replicate UIは、Replicate APIモジュールとエンドユーザーの間を橋渡しし、コンテンツエンティティを複製するための直感的なユーザーインターフェース要素を提供します。このモジュールを有効にすると、エンティティページに「Replicate」タブ、エンティティ操作ドロップダウンに「Replicate」オプション、およびViews Bulk Operationsと統合するアクションプラグインが追加されます。
このモジュールは、複製されたエンティティのラベルを作成前にカスタマイズできる確認フォームを備えており、各翻訳に独自のカスタマイズされたラベルを設定できる多言語コンテンツを完全にサポートしています。アクセス制御は、専用のパーミッションとエンティティの作成アクセス権の組み合わせによって処理され、ユーザーは作成権限を持つコンテンツのみを複製できます。
サイト管理者は設定ページを通じて特定のコンテンツエンティティタイプに対して選択的に複製を有効にでき、オプションで複製を許可する前にユーザーが元のエンティティの編集アクセス権を持っていることを要求できます。
Features
- 有効なエンティティタイプのエンティティ表示ページに「Replicate」ローカルタスク(タブ)を追加
- 複製されたエンティティのラベルをカスタマイズできる確認フォーム(デフォルトで「(Copy)」サフィックスをサポート)
- 各翻訳に対して個別のラベルカスタマイズを可能にする完全な多言語サポート
- エンティティリストのドロップダウン(例:コンテンツ管理ページ)に「Replicate」を表示するエンティティ操作統合
- バッチ複製を可能にするViews Bulk Operations(VBO)との統合用アクションプラグイン
- ワークフロー自動化のための「Replicate entity」アクションを持つRulesモジュール統合
- 任意のエンティティベースのViewに「Replicate」リンクを提供するViewsフィールドプラグイン
- エンティティタイプごとの設定が可能 - 必要なエンティティタイプのみに複製を有効化
- 編集できないコンテンツの複製を防止するオプションの編集アクセスチェック
- エンティティ編集ルートから管理テーマの使用を継承する自動管理ルート検出
Use Cases
コンテンツのバリエーションを素早く作成
コンテンツエディターは、わずかなバリエーションを持つ類似したコンテンツを作成する必要がよくあります。ゼロから作成する代わりに、既存のノードを複製し、新しいコンテンツを反映するようにタイトルを変更し、特定のフィールドを編集できます。これは、類似した構造を持つ製品ページ、イベント告知、ニュース記事に特に役立ちます。
VBOによるバッチコンテンツ複製
大規模なコンテンツ移行や再編成を管理するサイト管理者は、Viewで複数のアイテムを選択し、「Replicate」一括アクションを使用して選択したすべてのエンティティのコピーを一度に作成できます。これは、複数のセクションにわたってコンテンツを作成したり、異なるオーディエンス向けにコンテンツを準備したりする場合に便利です。
テンプレートベースのコンテンツ作成
組織は、新しいコンテンツの出発点として機能する「テンプレート」ノードまたはエンティティを作成できます。著者はテンプレートを選択し、Replicateをクリックして新しい名前を付け、詳細を入力します。これにより、類似したコンテンツタイプ間で構造と必須フィールドの一貫性が確保されます。
Rulesによる自動コンテンツワークフロー
Rules統合を使用すると、サイトはトリガーに基づいてエンティティを自動的に複製できます。たとえば、製品が「季節限定」とマークされた場合に自動的に別のカテゴリにコピーを作成したり、イベントが終了した場合に来年のイベント用のテンプレートを作成したりできます。
多言語コンテンツの準備
複数の翻訳を持つコンテンツを複製する場合、エディターは確認フォームで各言語バージョンのタイトルを直接カスタマイズできます。これにより、既存の翻訳を失うことなく、翻訳されたコンテンツのバリアントを作成するプロセスが合理化されます。
Tips
- エンティティ操作メニューをクリーンに保ち、不要なルートを減らすために、実際に必要なエンティティタイプにのみ複製を有効にしてください。
- 高セキュリティ環境では、「Check original entity edit access」オプションを使用して、ユーザーが変更できないコンテンツを複製することを防止することを検討してください。
- 複製されたエンティティは自動的に保存されません - ユーザーは作成後に新しいエンティティの表示ページにリダイレクトされ、必要に応じてすぐに編集できます。
- 多言語コンテンツで使用する場合、すべての翻訳が自動的に複製され、確認ステップでそれぞれにカスタムラベルを設定できます。
- ViewsのReplicateリンクはViews Bulk Operationsと組み合わせて、コンテンツ管理ワークフローの柔軟性を最大化できます。
- UIなしでプログラムによる複製を行う場合は、ベースのReplicateモジュールのreplicatorサービスを直接使用してください:\Drupal::service('replicate.replicator')->replicateEntity($entity)
Technical Details
Admin Pages 1
/admin/config/content/replicate
複製/複写機能をサポートするコンテンツエンティティタイプを設定します。有効にしたエンティティタイプのみがReplicateタブと操作を表示します。
権限 1
Hooks 3
hook_entity_type_build
有効なコンテンツエンティティタイプに「replicate」フォームクラスとリンクテンプレートを追加します。これにより、エンティティシステムが複製フォームハンドラーを認識できるようになります。
hook_entity_operation
複製をサポートし、適切なリンクテンプレートを持つエンティティのエンティティ操作ドロップダウンに「Replicate」操作を追加します。
hook_help
ノード、Views、VBO、Rules、Field Collectionを含むサポートされている統合を説明するヘルプテキストをモジュールのヘルプページに提供します。
Troubleshooting 4
以下を確認してください:1)/admin/config/content/replicateでエンティティタイプが有効になっている、2)現在のユーザーが「Replicate entities via UI」パーミッションを持っている、3)ユーザーがそのエンティティタイプの「作成」アクセス権を持っている、4)エンティティタイプを有効にした後、すべてのキャッシュをクリアする。
ユーザーには「replicate entities」パーミッションとエンティティタイプの作成アクセス権の両方が必要です。設定で「Check original entity edit access」が有効になっている場合、ユーザーは元のエンティティへの更新アクセス権も必要です。
Viewに表示されているエンティティタイプがモジュール設定で複製が有効になっていることを確認してください。設定変更後にキャッシュをクリアしてください。アクションはアクションリストに「Replicate [Entity Type]」として表示されます。
モジュールは設定が保存されるとルートを再構築します。ルートがまだ存在しない場合は、「drush cr」で手動で再構築するか、/admin/config/development/performanceにアクセスしてキャッシュをクリアしてください。
Security Notes 4
- 複製へのアクセスには「replicate entities」パーミッションとエンティティ作成アクセス権の両方が必要です - 一方だけでは不十分です。
- オプションの「check edit access」設定は、ソースエンティティへの更新パーミッションを要求することで追加のセキュリティレイヤーを提供します。
- 複製されたエンティティはフィールド値を継承しますが、新しいIDを持つ新しいエンティティとして作成されます - リビジョン履歴やモデレーション状態は継承されません。
- コンテンツモデレーターは、エンティティタイプの設定によっては、複製されたコンテンツがモデレーションワークフローをバイパスする可能性があることに注意する必要があります。