アーキテクチャ.

Learn DXPR BuilderExtendArchitectuur en API’s

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件です。このサービスは、このサイトの編集者に関するサーバー側リストの同期も維持します。