Pagedesigner

UI Patternsを活用したビジュアルコンテンツ作成を可能にするDrupal用ドラッグ&ドロップページビルダー。

pagedesigner
103 sites
39
drupal.org

インストール

Drupal 11, 10 v4.2.4
composer require 'drupal/pagedesigner:^4.2'

概要

Pagedesignerは、強力なオープンソースWebビルダーフレームワークであるGrapesJSとDrupalのUI Patternsモジュールを統合した、Drupal向けの包括的なビジュアルページビルダーモジュールです。コンテンツ編集者が技術的な知識を必要とせずに、直感的なドラッグ&ドロップインターフェースを通じてリッチで構造化されたページを作成できます。

このモジュールは「Pagedesigner Element」というカスタムエンティティタイプを導入し、ページの構成要素を階層構造で保存します。これらの要素は専用のフィールドタイプを通じてノードに接続され、Drupalのリビジョンおよび翻訳機能を維持しながらシームレスなコンテンツ管理を実現します。

主な機能には、リアルタイムビジュアル編集、パターンベースのコンポーネントシステム、メディア統合、競合を防ぐためのコンテンツロック、プラグインベースのアーキテクチャによる広範なカスタマイズが含まれます。このモジュールは複数のテーマ、レスポンシブデザイン編集をサポートし、Webform、Linkit、Yoast SEOなど様々なDrupalエコシステムモジュールと統合します。

Features

  • GrapesJSエディタによるドラッグ&ドロップビジュアルページビルダー
  • UI Patternsモジュールと統合されたパターンベースのコンポーネントシステム
  • 完全なリビジョンと翻訳サポートを備えたカスタムPagedesigner Elementエンティティ
  • CKEditor 5によるWYSIWYGテキスト編集でのリアルタイムコンテンツ編集
  • 同時編集の競合を防ぐコンテンツロック機構
  • 要素のCRUD操作、パターン管理、レンダリング用REST API
  • カスタム要素ハンドラーとアセットタイプ用の拡張可能なプラグインアーキテクチャ
  • すべての要素操作に対するbefore/afterフックを持つイベント駆動システム
  • きめ細かなアクセス制御のためのパターンごとの動的パーミッション
  • 画像、動画、音声、ドキュメント、埋め込み、SVGをサポートするメディア統合
  • Drupal Blocks、Webforms、外部統合のサポート
  • アクティブなテーマに基づくパターンフィルタリングを備えたマルチテーマサポート
  • レスポンシブブレークポイントサポートを持つCSSスタイル管理
  • ページ複製およびクローン機能
  • 構造検証とクリーンアップ用のDrushコマンドを備えたデバッグツール

Use Cases

マーケティングランディングページ

柔軟なレイアウト、ヒーローセクション、機能グリッド、お客様の声、コールトゥアクションボタンを備えたビジュアルに豊富なマーケティングランディングページを作成します。マーケティングチームは事前定義されたパターンを使用して、開発者の支援なしでページを構築・更新できます。

ブログと記事ページ

テキストコンテンツ、画像、埋め込み動画、プルクォート、関連コンテンツセクションを組み合わせた構造化された記事レイアウトを構築します。著者は一貫したデザインパターンを維持しながらコンテンツに集中できます。

製品ショーケース

画像ギャラリー、仕様表、機能ハイライト、埋め込みデモ動画を備えた製品詳細ページを作成します。ギャラリーサブモジュールはリッチなメディアプレゼンテーションを可能にします。

多言語コンテンツ

完全な翻訳ワークフローをサポートするページを構築します。Pagedesigner要素は翻訳可能で、構造的なレイアウトを共有しながら言語ごとに別々のコンテンツを維持します。

フォーム統合ページ

リード獲得、お問い合わせページ、アンケート用のWebformフォームとコンテンツを組み合わせたページを作成します。Webformサブモジュールはページレイアウト内でのシームレスなフォーム埋め込みを可能にします。

デザインシステム実装

UI Patternsを使用したコンポーネントベースのデザインシステムを実装します。デザイナーがパターンテンプレートを作成し、コンテンツ編集者が承認されたコンポーネントを使用してページを組み立て、ブランドの一貫性を確保します。

Tips

  • 意味のあるカテゴリでUI Patternsを作成し、コンテンツ編集者がエディタサイドバーでコンポーネントを発見しやすくします。
  • パターンに「designer: 1」の追加設定を使用して、高度なパターンを「access pagedesigner designer patterns」権限を持つユーザーに制限します。
  • イベントシステムを活用して、コアコードを変更せずにカスタム検証や変換ロジックを実装します。
  • ローディング画面のコンテンツは設定フォームを通じてサイトのブランディングに合わせてカスタマイズできます。
  • 複雑なページでのパフォーマンス向上のために、DOM除外設定を使用してエディタによるコンテンツ以外の要素の処理を防ぎます。
  • Drupalコアまたはモジュールの更新後は常にPagedesigner機能をテストしてください。GrapesJS統合はJavaScriptライブラリの変更に敏感な場合があります。
  • 開発中はpagedesigner_debugモジュールを使用して構造的な問題を早期に発見します。
  • pattern.ymlで定義されたパターンスタイリングオプションは、「edit pagedesigner styles」権限を持つユーザーのみが利用可能です。

Technical Details

Admin Pages 6
Pagedesigner /admin/config/pagedesigner

Pagedesignerモジュール設定のメイン設定ランディングページ。

Pagedesigner設定 /admin/config/pagedesigner/settings

エディタ設定、トレイト設定、パフォーマンスオプションを含むPagedesignerモジュールのグローバル設定を構成します。

Pagedesignerロック管理 /admin/config/pagedesigner/locks

アクティブなコンテンツロックを表示および管理します。ユーザーがPagedesignerでコンテンツを編集しているとき、競合を防ぐためにロックが作成されます。管理者はすべてのアクティブなロックを表示し、必要に応じて強制的に削除できます。

Pagedesignerタイプ /admin/structure/pagedesigner_type

Pagedesigner要素タイプ(バンドル)を管理します。これらのタイプは、ページビルダーで利用可能なさまざまな種類のビルディングブロックを定義します。

Pagedesignerエンティティ一覧 /admin/content/pagedesigner_elements

システム内のすべてのPagedesigner要素の管理用リスト。デバッグやコンテンツ管理に便利です。

Pagedesignerで編集 /node/{node}/pagedesigner

ドラッグ&ドロップPagedesignerを使用したノードコンテンツのビジュアル編集インターフェース。このページは利用可能なすべてのパターンを持つGrapesJSエディタを読み込み、リアルタイムのコンテンツ編集を可能にします。

権限 8
Pagedesigner Elementエンティティを管理

Pagedesigner Elementエンティティを設定する管理フォームへのアクセスを許可します。制限されたアクセス権限です。

Pagedesigner Elementエンティティを編集

ロールがpagedesignerを使用して要素を作成および編集することを許可します。これには「未公開のPagedesigner Elementエンティティを表示」権限が暗黙的に含まれます。

未公開のPagedesigner Elementエンティティを表示

ロールがpagedesignerコンテンツの未公開バージョンを見ることを許可します。

パターンのスタイルを変更

ロールがパターンのスタイルを変更することを許可し、エディタでのCSSカスタマイズを有効にします。

デザイナーパターンを追加

ロールがデザイナー/管理者用にフラグ付けされた特別なパターン(ナビゲーション項目、HTMLインクルード、または同様の高度なコンポーネントなど)にアクセスすることを許可します。

Pagedesigner設定を管理

この権限を持つユーザーはPagedesigner設定を管理できます。制限されたアクセス権限です。

Pagedesignerロックを管理

この権限を持つユーザーは、他のユーザーが保持するロックの表示や強制削除を含め、Pagedesignerロックを管理できます。

Pagedesignerでパターン[パターンラベル]を使用

各UI Patternに対して生成される動的パーミッション。ユーザーがページに追加できるパターンを制御します。

Hooks 3
hook_pagedesigner_css_statement_alter

個々の要素にレンダリングされるCSSステートメントを変更します。各要素のCSS出力に対して呼び出されます。

hook_pagedesigner_css_rendered_alter

Rendererサービスによってレンダリングされる最終的なCSS出力を変更します。各レスポンシブブレークポイント(large、medium、small)に対して呼び出されます。

hook_pagedesigner_access

特定のエンティティに対するpagedesigner編集アクセスを制御します。アクセスを拒否するにはAccessResult::forbidden()を返します。

Drush Commands 2
drush pagedesigner_debug:check

Pagedesigner要素の構造に不整合やエラーがないかチェックします。変更を加えずに問題を報告します。

drush pagedesigner_debug:correct

Pagedesigner要素の構造の問題を対話的にチェックして修正します。修正を適用する前に確認を求めます。

Troubleshooting 6
エディタに「他のユーザーが現在編集中です」というメッセージが表示される

コンテンツロック機構がアクティブです。他のユーザーが終了するまで待つか、ロックが古い場合は/admin/config/pagedesigner/locksに移動してロックを強制的に削除します(「administer pagedesigner locks」権限が必要です)。

パターンがエディタに表示されない

UI Pattern定義のpattern.ymlファイルの追加設定セクションに「pagedesigner: 1」が含まれていることを確認してください。また、パターンに有効なタイプが定義されており、ユーザーが「use pattern [pattern_id]」権限を持っていることを確認してください。

要素構造の不整合や孤立した要素

pagedesigner_debugサブモジュールを有効にし、「drush pagedesigner_debug:check」を実行して問題を特定し、その後「drush pagedesigner_debug:correct」を実行して対話的に修正します。

コンテンツが保存されない、または変更が失われる

ブラウザコンソールでREST APIエラーを確認してください。/admin/config/services/restでRESTリソースが有効になっていることを確認してください。ユーザーが「edit pagedesigner element entities」権限を持っており、必要なREST認証が設定されていることを確認してください。

エディタの読み込みが遅い、またはタイムアウトする

パフォーマンス設定を使用して不要なDOM要素をキャンバスから除外してください。読み込まれるパターンが多すぎないか確認してください。「exclude_dom_elements_before」および「exclude_dom_elements_after」設定を検討してください。

翻訳が正しく機能しない

Pagedesignerフィールドがコンテンツタイプで翻訳可能に設定されていることを確認してください。コンテナ要素は親エンティティが翻訳されると自動的に翻訳を作成する必要があります。

Security Notes 5
  • 「administer pagedesigner element entities」権限はすべてのPagedesignerコンテンツに対する完全な制御を提供するため、信頼された管理者にのみ付与する必要があります。
  • コンテンツロックはデータ損失を防ぐのに役立ちますが、セキュリティ機能ではありません - 時間ベースの有効期限(180秒)を使用し、強制的にオーバーライドできます。
  • REST APIエンドポイントには適切な認証と権限が必要です。RESTリソース設定を確認して、適切なアクセス制御を確保してください。
  • テキストフォーマットが許可する場合、HTMLコンテンツトレイトはJavaScriptを実行できます - 適切なテキストフォーマット制限を使用してください。
  • 動的パターン権限はすべてのUI Patternsに対して生成されます - システムに新しいパターンを追加した後は付与された権限を確認してください。