ユニバーサルエディター universal-editor
ユニバーサルエディターの柔軟性と、AEM 6.5 を使用してヘッドレスエクスペリエンスを強化する方法について説明します。
概要 overview
ユニバーサルエディターは、Adobe Experience Manager Sites の一部である多用途のビジュアルエディターです。作成者は、ヘッドレスエクスペリエンスに対して見たままが得られる(WYSIWYG)編集を行うことができます。
- 作成者は、ユニバーサルエディターがAEM ヘッドレスコンテンツのすべてのフォームに対して同じ一貫性のあるビジュアル編集をサポートするので、ユニバーサルエディターの柔軟性の利点を活用できます。
- ユニバーサルエディターは実装の真の分離をサポートするので、開発者はユニバーサルエディターの汎用性のメリットを受けます。 これにより、開発者は、SDK やテクノロジーに制約を課すことなく、選択したほぼすべてのフレームワークやアーキテクチャを利用できます。
詳しくは、ユニバーサルエディターの AEM as a Cloud Service ドキュメントを参照してください。
アーキテクチャ architecture
ユニバーサルエディターは、AEMと連携してコンテンツをヘッドレスにオーサリングするサービスです。
- ユニバーサルエディターは
https://experience.adobe.com/#/aem/editor/canvas
でホストされ、AEM 6.5 でレンダリングされたページを編集できます。 - AEM ページは、AEM オーサーインスタンスから Dispatcher を介してユニバーサルエディターによって読み取られます。
- Dispatcherと同じホスト上で実行されるユニバーサルエディターサービスが、変更内容をAEM オーサーインスタンスに書き戻します。
設定 setup
ユニバーサルエディターをテストするには、次の操作が必要です。
設定が完了したら、 ユニバーサルエディターを使用するようにアプリケーションをインストルメントできます。
AEMの更新 update-aem
AEM 6.5 でユニバーサルエディターを使用するには、サービスパック 21 または 22、AEMの機能パックが必要です。
最新のサービスパックを適用 latest
AEM 6.5 の Service Pack 21 または 22 以降を実行していることを確認してください。最新のサービスパックは、 ソフトウェア配布からダウンロードできます。
ユニバーサルエディター機能パックのインストール feature-pack
AEM 6.5 用ユニバーサルエディター機能パック ソフトウェア配布で入手可能 をインストールします。
既にサービスパック 23 以降を実行している場合、機能パックは必要ありません。
サービスの設定 configure-services
機能パックにより、追加の設定が必要な多数の新しいパッケージがインストールされます。
login-token
cookie に SameSite 属性を設定します。 samesite-attribute
- Configuration Manager を開きます。
http://<host>:<port>/system/console/configMgr
- リストで Configuration Granite Token Authentication Handler を見つけて、「Adobe値を変更」をクリックします。
- ダイアログで、login-token cookie の SameSite 属性 (
token.samesite.cookie.attr
)の値をPartitioned
に変更します。 - 「保存」をクリックします。
SAMEORIGIN
ヘッダーの X-Frame オプションを削除します。 sameorigin
- Configuration Manager を開きます。
http://<host>:<port>/system/console/configMgr
- リストで Apache Sling Main Servlet を見つけ、設定値を編集 をクリックします。
- 追加の応答ヘッダー 属性(
sling.additional.response.headers
)が存在する場合は、その属性からX-Frame-Options=SAMEORIGIN
値を削除します。 - 「保存」をクリックします。
Adobe Granite クエリパラメーター認証ハンドラーを設定します。 query-parameter
- Configuration Manager を開きます。
http://<host>:<port>/system/console/configMgr
- リストで AdobeGranite クエリパラメーター認証ハンドラー を見つけて、設定値を編集 をクリックしてください。
- パス フィールド(
path
)に、有効にする/
を追加します。- 値が空の場合は、認証ハンドラーが無効になります。
- 「保存」をクリックします。
ユニバーサルエディターを開くコンテンツ sling:resourceTypes
パスまたはパスを定義します。 paths
-
Configuration Manager を開きます。
http://<host>:<port>/system/console/configMgr
-
リストで ユニバーサルエディター URL サービス を見つけて、「設定値を編集」をクリックします。
-
ユニバーサルエディターを開くコンテンツ
sling:resourceTypes
パスまたはパスを定義します。- ユニバーサルエディターを開くマッピング フィールドで、ユニバーサルエディターを開くパスを指定します。
- ユニバーサルエディターで開く Sling:resourceTypes フィールドに、ユニバーサルエディターによって直接開かれるリソースのリストを指定します。
-
「保存」をクリックします。
AEMは、この設定に基づくページのユニバーサルエディターを開きます。
- AEMは
Universal Editor Opening Mapping
の下のマッピングをチェックします。コンテンツがそこに定義されたパスの下にある場合は、ユニバーサルエディターが開きます。 Universal Editor Opening Mapping
で定義されたパスにないコンテンツの場合、AEMは、コンテンツのresourceType
が、ユニバーサルエディターで開かれる Sling:resourceTypes で定義されたものと一致するかどうかを確認し コンテンツがこれらの型のいずれかに一致する場合、ユニバーサルエディターは${author}${path}.html
で開かれます。- それ以外の場合は、AEMによってページエディターが開きます。
Universal Editor Opening Mapping
の下でマッピングを定義するには、次の変数を使用できます。
path
:開くリソースのコンテンツパスlocalhost
:スキーマを含まないlocalhost
(例:localhost:4502
)の Externalizer エントリauthor
:スキーマなしのオーサー用 Externalizer エントリ(例:localhost:4502
)publish
:スキーマを使用しないパブリッシュ用の Externalizer エントリ(例:localhost:4503
)preview
:スキーマを使用しないプレビュー用の Externalizer エントリ(例:localhost:4504
)env
:定義された Sling 実行モードに基づくprod
、stage
、dev
token
:QueryTokenAuthenticationHandler
にクエリトークンが必要です
マッピングの例:
-
AEM オーサーで
/content/foo
の下のすべてのページを開きます。/content/foo:${author}${path}.html?login-token=${token}
- これにより、
https://localhost:4502/content/foo/x.html?login-token=<token>
が開きます
-
すべての変数を情報として指定して、リモート NextJS サーバー上の
/content/bar
下にあるすべてのページを開きます。/content/bar:nextjs.server${path}?env=${env}&author=https://${author}&publish=https://${publish}&login-token=${token}
- これにより、
https://nextjs.server/content/bar/x?env=prod&author=https://localhost:4502&publish=https://localhost:4503&login-token=<token>
が開きます
ユニバーサルエディターサービスの設定 set-up-ue
AEMが更新および設定されたので、独自のローカル開発およびテスト用にローカルのユニバーサルエディターサービスをセットアップできます。
-
Node.js のバージョン >=20 をインストールします。
-
ソフトウェア配布から最新のユニバーサルエディターサービスをダウンロードして展開します
-
環境変数または
.env
ファイルを使用してユニバーサルエディターサービスを設定します。- 詳しくは、AEM as a Cloud Service ユニバーサルエディターのドキュメントを参照してください。
- 内部 IP の書き換えが必要な場合は、
UES_MAPPING
オプションを使用する必要がある場合があります。
-
実行
universal-editor-service.cjs
Dispatcherの更新 update-dispatcher
AEMが設定され、ローカルのユニバーサルエディターサービスが実行されている場合は、(Dispatcher で 新しいサービスのリバースプロキシを許可する必要があます。
-
オーサーインスタンスの vhost ファイルを調整して、リバースプロキシが組み込まれるようにします。
code language-html <IfModule mod_proxy.c> ProxyPass "/universal-editor" "http://localhost:8080" ProxyPassReverse "/universal-editor" "http://localhost:8080" </IfModule>
note note NOTE デフォルトのポートは 8080 です。 .env
ファイルのUES_PORT
パラメーターを使用してこの値を変更した場合は、ポートの値を適宜調整する必要があります。 -
Apache を再起動します。
アプリの実装 instrumentation
AEMが更新され、ローカルのユニバーサルエディターサービスが実行されている状態で、ユニバーサルエディターを使用してヘッドレスコンテンツの編集を開始できます。
ただし、ユニバーサルエディターを利用するには、アプリのインストルメントを行う必要があります。 これには、コンテンツを保持する方法と場所をエディターに指示するメタタグを含める必要があります。 この実装について詳しくは、AEM as a Cloud Serviceのユニバーサルエディターのドキュメントを参照してください。
AEM as a Cloud Serviceでユニバーサルエディターを使用する場合にドキュメントに従うと、AEM 6.5 で使用する場合に次の変更が適用されます。
-
メタタグのプロトコルは、
aem
ではなくaem65
にする必要があります。code language-html <meta name="urn:adobe:aue:system:aemconnection" content={`aem65:${getAuthorHost()}`}/>
-
ユニバーサルエディターサービスエンドポイントは、メタタグを使用してアナウンスする必要があります。
code language-html <meta name="urn:adobe:aue:config:service" content={`${getAuthorHost()}/universal-editor`}/>
-
コンポーネント定義の
plugins
セクションでは、aem
の代わりにaem65
を使用する必要があります。