アーキテクチャ.
DXPR Builderは3つの部分から成ります。PHPのフィールドフォーマッター、ブラウザーで動作するエディター、データの保存・取得のためにエディターが呼び出すルート群です。このページでは、これらがどのように連携するかを説明します。
フィールドフォーマッター
コンテンツは通常のDrupalテキストフィールド(text、
text_long、text_with_summary)に保存されたHTMLです。ビューディスプレイがDXPR Builderフォーマッター
(dxpr_builder_text。格納場所は
src/Plugin/Field/FieldFormatter/DxprBuilderFormatter.php)を使うと、そのフィールドは編集可能になります。
フォーマッターがエディターを読み込むのは、次のすべてを満たす場合のみです。
- 閲覧者が課金対象(user 1、またはDXPR Builder編集から除外されていない
edit with dxpr builder付きの有効なアカウント)。 - 閲覧者がエンティティを更新できる。
- アカウントにメールアドレスがある。
- ライセンスのユーザー上限とコンテンツ上限を超えていない。
- サイトがライセンスサーバーのブロックリストになく、ページがリビジョンページでない。
その他の全員には処理済みHTMLが返されます。パストークンの展開、Drupal
ブロックとビューのプレースホルダーへのレンダリング、data-az*
エディター属性の除去、コンテンツが必要とするライブラリの
アタッチが行われます。ログインユーザー向けの出力はキャッシュされません(max-ageは0)。
ユーザーごとの設定を含むためです。
エディター
エディターはdxpr_builder/editor.builderライブラリとして読み込まれるJavaScriptファイル群です。DXPRのCDNから提供されるか、ローカルビルドがある場合はモジュール内のdxpr_builder/フォルダーから提供されます。Asset source設定(General Settings内)はその場合にのみ表示されます。エディターはフィールドのHTMLをエレメントオブジェクトのツリーに解析し、保存時にHTMLに書き戻します。
エレメントタイプはdxpr_builder/build/内の2か所にあります。
| フォルダー | エレメントタイプ |
|---|---|
dxpr-builder/core-elements/ |
コンテナー、セクション、ロー、カラム、タブとそのタブ・トグル・スライドパネル |
dxpr-elements/elements/ |
コンテンツエレメントとCollapsibles、Carousel、Positioned Layersレイアウトエレメント |
各エレメントは設定を自身のHTML内に保持します。data-azat-*
属性、クラス、インラインスタイルです。保存されたHTMLがレイアウトの唯一の記録であり、別のレイアウトストレージはありません。
カスタムエレメントで形式を確認できます。
既存HTMLの解析
ビルダー属性のないマークアップは、エディターの読み込み時にエレメントにマッピングされます。
Bootstrapのコンテナー、ロー、カラムはセクション、ロー、カラムになります。認識されたコンポーネントは対応するエレメントになります(例: ボタン、アラート、カード、引用、画像、
アイコン、プログレスバー、タブ、折りたたみ)。テキスト、テーブル、その他のインライン-マークアップはTextエレメントに、<iframe>はHTMLエレメントになります。単独の<script>や<style>タグ、コメントは破棄されます。ルールはdxpr-builder/base-element/parse-html.jsにあります。
エディターが呼び出すルート
エディターは/dxpr_builder/ajax経由で保存し、
/dxpr_builder/ajax/file_upload経由でファイルをアップロードし、
/dxpr_builder/ajax/ai/*経由でAIに到達します。多くのルートは課金対象ユーザーのアクセスチェックとCSRFトークンを確認します。アクセス要件付きの全一覧はAPIリファレンスにあります。
設定エンティティ
| エンティティタイプ | 設定プレフィックス | 内容 |
|---|---|---|
dxpr_builder_page_template |
dxpr_builder.page_template |
フルページのレイアウト |
dxpr_builder_user_template |
dxpr_builder.user_template |
編集者が再利用用に保存したセクション |
dxpr_builder_profile |
dxpr_builder.dxpr_builder_profile |
エレメント、ブロック、ビュー、テンプレート、アイコンセット、テキストエディターボタンに対するロールごとの制限 |
ライセンスチェック
プロダクトキーはJWTです。DxprBuilderLicenseServiceがDXPRライセンスサーバーに送信し、ライセンス状態とユーザー・コンテンツ上限が返されます。結果はキャッシュされます。プロダクトキーがない場合は無料枠が適用されます。ユーザー1人とコンテンツ100件です。このサービスは、このサイトの編集者に関するサーバー側リストの同期も維持します。