ページエクスポーター

AEMでは、画像、.jsおよび.cssファイルを含む完全なWebページとしてページを書き出すことができます。

設定が完了したら、URLのhtmlexport.zipに置き換えて、ブラウザーからのページ書き出しを要求します。 これにより、HTML形式でレンダリングされたページと参照元のアセットが含まれるアーカイブ(zip)ファイルが生成されます。 ページ内のすべてのパス(例えば、画像へのパス)は、アーカイブに含まれるファイルまたはサーバー上のリソースを指すように書き換えられます。 アーカイブ(zip)ファイルは、ブラウザーからダウンロードできます。

メモ

ブラウザーと設定に応じて、ダウンロードは次のいずれかになります。

  • アーカイブファイル(<page-name>.export.zip)
  • フォルダー(<page-name>);事実上、アーカイブ・ファイルは既に拡張済

ページの書き出し

次の手順は、ページを書き出す方法と、サイトに書き出しテンプレートが存在することを前提としています。 書き出しテンプレートは、ページの書き出し方法を定義し、サイトに固有です。 書き出しテンプレートを作成するには、「サイトのページエクスポーター設定の作成」の節を参照してください。

ページを書き出すには:

  1. サイト​コンソールで必要なページに移動します。

  2. ページを選択し、プロパティ​ダイアログを開きます。

  3. 詳細」タブを選択します。

  4. エクスポート」フィールドを展開して、エクスポートテンプレートを選択します。
    サイトに必要なテンプレートを選択し、「OK」で確定します。

  5. 保存して閉じる」を選択して、ページプロパティダイアログを閉じます。

  6. URLのサフィックスhtmlexport.zipに置き換えて、ページの書き出しを要求します。

    次に例を示します。

    • localhost:4502/content/we-retail/language-masters/en.html

    次の場所からアクセスします。

    • localhost:4502/content/we-retail/language-masters/en.export.zip
  7. アーカイブファイルをファイルシステムにダウンロードします。

  8. ファイルシステムで、必要に応じてファイルを解凍します。 展開すると、選択したページと同じ名前のフォルダーが作成されます。 このフォルダーには次が含まれます。

    • サブフォルダーcontent:リポジトリ内のページへのパスを反映する一連のサブフォルダーのルートです。

      • この構造内には、選択されたページのhtmlファイル(<page-name>.html)があります。
    • その他のリソース(.jsファイル、.cssファイル、画像など) は、書き出しテンプレートの設定に従って配置されます。

  9. ブラウザーでページのhtmlファイル(<unzip-dir>/<path>/<to>/<page>/<page-path>.html)を開き、レンダリングを確認します。

サイト用のページエクスポーター設定の作成

ページエクスポーターは、コンテンツ同期フレームワークに基づいています。 ページのプロパティ​ダイアログで使用できる設定は、ページに必要な依存関係を定義する書き出しテンプレートです。

ページの書き出しがトリガーされると、書き出しテンプレートが参照され、ページパスとデザインパスの両方が動的に適用されます。 zipファイルは、標準のコンテンツ同期機能を使用して作成されます。

標準インストールのAEMには、/etc/contentsync/templates/defaultの下にデフォルトのテンプレートが含まれています。

  • このテンプレートは、リポジトリ内に書き出しテンプレートが見つからない場合のフォールバックテンプレートです。

  • defaultテンプレートは、新しい書き出しテンプレートのベースとなるために、ページの書き出しを設定する方法を示します。

  • テンプレートのノード構造をJSON形式でブラウザーに表示するには、次のURLを要求します。
    http://localhost:4502/etc/contentsync/templates/default.json

新しいページエクスポーターテンプレートを作成する最も簡単な方法は次のとおりです。

  • defaultテンプレートをコピーします。

  • サイトに適切な新しい名前を割り当てます。

  • 次に、必要な更新を行います。

完全に新しいテンプレートを作成するには:

  1. CRXDE Lite​で、/etc/contentsync/templatesの下にノードを作成します。

    • Name:サイトに適した名前例: <mysite>。この名前は、ページエクスポーターテンプレートを選択する際に、ページプロパティダイアログに表示されます。

    • Type: nt:unstructured

  2. テンプレートノード(ここでは mysite)の下に、以下で説明する設定ノードを使用してノード構造を作成します。

ページのページエクスポーターテンプレートのアクティブ化

テンプレートを設定したら、使用可能にする必要があります。

  1. CRXDEで、/contentブランチ内の必要なページに移動します。 これは、個々のページまたはサブツリーのルートページにすることができます。

  2. ページのjcr:contentノードで、次のプロパティを作成します。

    • Name: cq:exportTemplate
    • Type: String
    • Value:テンプレートへのパス例: /etc/contentsync/templates/mysite

ページエクスポーター設定ノード

テンプレートは、コンテンツ同期フレームワークを使用するノード構造で構成されます。 各ノードにはtypeプロパティがあり、zipファイルの作成プロセスでの特定のアクションを定義します。

書き出しテンプレートの作成には、次のノードを使用できます。

  • pagepage ノードは、ページの HTML を zip ファイルにコピーする際に使用します。次のような特徴があります。

    • 必須ノードである。
    • /etc/contentsync/templates/<mysite>の下にあります。
    • プロパティNamepageに設定して定義します。
    • ノードタイプはnt:unstructuredです。

    page ノードには以下のプロパティがあります。

    • pagesで設定されたtypeプロパティ。

    • path プロパティはありません。現在のページパスが設定に動的にコピーされます。

  • rewriterewrite ノードでは、書き出したページでリンクを書き換える方法を定義します。書き換え後のリンクは、zip ファイルに含まれるファイルまたはサーバー上のリソースを指すことができます。

  • designdesign ノードは、書き出されるページに使用されているデザインをコピーする際に使用します。次のような特徴があります。

    • オプションである。
    • /etc/contentsync/templates/<mysite>の下にあります。
    • プロパティNamedesignに設定して定義します。
    • ノードタイプは nt:unstructured です。

    design ノードには以下のプロパティがあります。

    • copyに設定されたtypeプロパティ。

    • 現在のページパスは設定に動的にコピーされるので、pathプロパティはありません。

  • generic
    汎用ノードは、clientlibsなどのリソースのコピーに使用されます
    .js または .css ファイルをzipファイルにコピーします。次の特性があります。

    • オプションである。
    • /etc/contentsync/templates/<mysite>の下にあります。
    • 特定の名前を持たない。
    • ノードタイプは nt:unstructured です。
    • typeプロパティとtype関連プロパティがある。

    例えば、次の設定ノードでは、mysite.clientlibs.jsファイルをzipファイルにコピーします。

    "mysite.clientlibs.js": {
        "extension": "js",
        "type": "clientlib",
        "path": "/etc/designs/mysite/clientlibs",
        "jcr:primaryType": "nt:unstructured"
    }
    

カスタム設定の実装

カスタム設定も可能です。

特定の要件を満たすには、場合によってはカスタム更新ハンドラーを実装する必要があります。

プログラムによるページの書き出し

プログラムによってページを書き出すには、PageExporter OSGI サービスを使用できます。このサービスを使用すると、次のことが可能です。

  • ページを書き出して HTTP サーブレット応答に書き込む。
  • ページを書き出して zip ファイルを特定の場所に保存する。

export セレクターおよび zip 拡張子にバインドされているサーブレットは PageExporter サービスを使用します。

トラブルシューティング

zipファイルのダウンロードで問題が発生した場合は、リポジトリ内の/var/contentsyncノードを削除し、書き出しリクエストを再度送信できます。

このページ