Drupal Canvas
サイトビルダーがブラウザベースのビジュアルインターフェースを通じてウェブサイトのテーマ設定と構築を行い、コンテンツ作成者がコードを書かずにコンポーネントを使用してページを構成できる、包括的なサイト構築およびコンテンツ構成システムです。
canvas
インストール
composer require 'drupal/canvas:^1.0'
概要
Drupal Canvasは、Drupalでのウェブサイトの構築と管理方法を革新する、洗練されたコンポーネントベースのサイト構築プラットフォームです。従来のDrupalテーマ設定の専門知識を不要にする、ビジュアルなブラウザベースのインターフェースを提供します。
このモジュールにより、Drupalの経験がないサイトビルダーでも、基本的なHTML、CSS、テンプレートマークアップ(Twigなど)以外のコードを書くことなく、ブラウザのみを使用してウェブサイト全体のテーマ設定と構築を簡単に行えます。コンテンツ作成者は、開発者に頼ることなくページの任意の部分でコンテンツを構成できます。
Canvasは、Single Directory Components(SDC)、ブラウザで直接作成するJavaScript/Code Components、コンポーネントとしてのBlockプラグインなど、複数のコンポーネントソースをサポートしています。コンポーネントの包括的なバージョン管理システム、自動保存機能、ReactベースのUIのための強力なHTTP API、AIを活用したページ構築やパーソナライゼーションなどの高度な機能を備えています。
このモジュールには、コンポーネント、パターン、フォルダ、ページリージョン、コンテンツテンプレート、アセットライブラリを管理するための設定エンティティの完全なセットが含まれています。Canvasインターフェース内で完全にスタンドアロンページを構築するための専用の「Canvas Page」コンテンツエンティティタイプを提供します。
Features
- ReactベースのUIによるビジュアルなブラウザベースのサイト構築インターフェース
- 複数のコンポーネントソースのサポート:Single Directory Components(SDC)、JavaScript/Code Components、Blockプラグイン
- 自動バージョン追跡とフォールバックサポートを備えたコンポーネントバージョン管理システム
- 設定エンティティとコンテンツエンティティ両方の自動保存機能
- UI通信用のOpenAPI仕様に準拠した包括的なHTTP API(v0)
- コンテンツエンティティバンドル用のコンポーネントベースレイアウトを定義するContent Templates
- コンポーネントツリーでテーマリージョンをカスタマイズするPage Template/Regionシステム
- 再利用可能なコンポーネントツリー構成を作成するPatternシステム
- コンポーネントとパターンのフォルダ整理
- サイト全体のカスタムCSSとJavaScript用のGlobal Asset Library
- JSON Schema定義をDrupalフィールドタイプにマッピングするShape Matchingシステム
- コンテンツエンティティから構造化データを評価するPropExpressionシステム
- スタンドアロンページ構築用のCanvas Pageコンテンツエンティティタイプ
- 一貫したプレビューレンダリングのためのセミカップルドテーマエンジン
- Canvas UIにカスタム機能を追加するExtensionシステム
- コンポーネント内のリッチテキスト編集のためのCKEditor 5統合
- コンポーネントでの画像およびメディア処理のためのMedia Library統合
Use Cases
コードなしでのランディングページ構築
マーケティングチームはCanvasビジュアルインターフェースを通じてランディングページを完全に作成できます。Canvas Pageコンテンツエンティティタイプを使用して、コンポーネントをドラッグアンドドロップし、自動生成されたフォームでプロパティを設定し、リアルタイムで変更をプレビューできます。Drupalテーマ設定、PHP、Twigの知識は必要ありません。
一貫したコンテンツテンプレートの作成
サイトビルダーは特定のコンテンツタイプ(記事、イベント、製品など)のコンポーネントベースのレイアウトを定義するContent Templatesを作成できます。コンテンツエディタはコンテンツデータを入力し、ビジュアル構造は一貫して維持されます。公開スロットにより、定義された境界内で限定的なレイアウトの柔軟性が許可されます。
ブラウザでのカスタムコンポーネント開発
開発者はCanvas UI内でJavaScriptとCSSを使用してCode Componentsを直接作成できます。これらのコンポーネントはJSON Schemaで定義されたプロパティをサポートし、canvasData設定を通じてDrupalデータにアクセスできます。コードベースに触れずにインタラクティブなコンポーネントを作成するのに最適です。
コンポーネント構成のパターンとしての再利用
一般的なコンポーネント配置(特定のスタイリングを持つヒーローセクションなど)はPatternsとして保存できます。これらのパターンは任意のページやテンプレートに挿入でき、一貫性を確保し、繰り返しの設定作業を削減します。
テーマリージョンのカスタマイズ
サイトビルダーはPage Regionシステムを通じてテーマリージョン(サイドバー、ヘッダー、フッターなど)にコンポーネントツリーを配置できます。これはブロックを配置する代わりのビジュアルな方法を提供し、より複雑なリージョン構成を可能にします。
外部アプリケーション統合
canvas_oauthサブモジュールを使用することで、ヘッドレスCMSフロントエンドやモバイルアプリなどの外部アプリケーションが認証されたHTTP APIを通じてCanvasと対話できます。これにより、Canvasのビジュアル編集機能を維持しながら、デカップルドアーキテクチャが可能になります。
Tips
- Canvasエディタで'V'キーのショートカットを使用して、UIオーバーレイを一時的に非表示にし、ブラウザの開発者ツールでレンダリングされたプレビューマークアップを検査しやすくします。
- 開発中はcanvas_dev_modeモジュールをインストールして、デバッグ用の拡張ツールバーとプライベートAPIにアクセスできるようにします。
- 外部データが必要なCode Componentsには、dataDependencies設定を使用してURLフェッチとdrupalSettings要件を宣言します。
- Canvas用のSDCコンポーネントを作成する際は、各必須プロパティの例を含む包括的なJSON Schemaを定義して、自動生成されたフォームの体験を向上させます。
- よく使用するコンポーネント構成をPatternsに保存し、一貫したレイアウトのためにページに挿入します。
- canvas_viteモジュールは、Canvas UI開発中にHot Module Replacementを有効にすることで、UI開発を大幅に高速化します。
Technical Details
Admin Pages 4
/admin/appearance/component
Canvasシステムで利用可能なすべてのコンポーネントを表示・管理します。コンポーネントは有効化、無効化、監査、フォルダへの整理が可能です。このページにはSDC、Code Components、Blockプラグインを含むすべてのソースからのコンポーネントが一覧表示されます。
/admin/content/pages
Canvas Pageコンテンツエンティティを管理します。Canvasビジュアルエディタで作成したページの表示、編集、削除を行います。
/canvas
Canvasビジュアル編集インターフェースへのメインエントリーポイント。コンポーネントを使用してページとコンテンツを構成するためのReactベースのUIを開きます。
/canvas/editor/{entity_type}/{entity}
コンポーネントを使用してコンテンツを構成するためのビジュアルエディタインターフェース。Canvas Page、Content Templates、その他のコンポーネントツリー対応エンティティの編集をサポートします。
権限 10
Hooks 1
hook_canvas_storable_prop_shape_alter
コンポーネントプロパティの保存可能なプロパティシェイプを変更します。このhookにより、モジュールはJSON Schemaプロパティ定義がDrupalフィールドタイプ、ウィジェット、設定にどのようにマッピングされるかをカスタマイズできます。
Troubleshooting 5
modules/contrib/canvas/uiディレクトリで'npm install && npm run build'を実行してフロントエンドUIがビルドされていることを確認してください。また、canvas_starkテーマがインストールされていることも確認してください。
コンポーネントがソースの要件を満たしているか確認してください。SDCコンポーネントの場合、component.ymlファイルに有効なJSON Schema定義があることを確認してください。/admin/appearance/component/statusにアクセスして、無効化された非互換のコンポーネントを確認してください。
ユーザーが'publish auto-saves'権限を持ち、編集中のエンティティへの更新アクセス権があることを確認してください。ブラウザコンソールでAPIエラーを確認してください。
JavaScriptコードが有効で、プロパティがJSON Schemaで正しく定義されていることを確認してください。ブラウザコンソールでJavaScriptエラーを確認してください。
CanvasはJSON:APIの読み取り専用モードを無効にする必要があります。JSON:API設定に関する警告についてはステータスレポートを確認してください。
Security Notes 4
- 'administer code components'権限はCode Componentsが任意のJavaScriptを実行できるため、制限付きとしてマークされています。信頼できるユーザーにのみこの権限を付与してください。
- Canvasはすべての変更を伴うAPIエンドポイントにCSRF保護を使用しています。外部APIアクセスには、canvas_oauthサブモジュールを通じたOAuth2認証が必要です。
- 安全な認証を確保するために、外部アプリケーション統合にはcanvas_oauthサブモジュールを使用する必要があります。
- コンポーネントツリー入力は、無効なデータの注入を防ぐために定義されたスキーマに対して検証されます。