現在表示中:

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

書き出しが設定されたら、ブラウザーで URL の htmlexport.zip に置き換えることによってページを要求するだけで、HTML 形式のレンダリングされたページと参照されたアセットを含む zip ファイルのダウンロードを入手できます。ページ内のすべてのパス(画像のパスなど)は、zip ファイルに含まれているファイルまたはサーバー上のリソースを指すように書き直されます。

ページの書き出し

以下の手順では、ページの書き出し方法を説明します。ここでは、書き出し設定テンプレートがサイト用に存在することを前提としています。設定テンプレートは、ページの書き出し方法を定義するものであり、サイト専用です。設定テンプレートを作成するには、サイト用のページエクスポーター設定の作成を参照してください。

ページを書き出すには:

  1. ブラウザーで、ページを開きます。次に例を示します。
  2. http://localhost:4502/content/geometrixx/en/products/triangle.html
  3. ページのプロパティダイアログを開き、「詳細」タブを選択して、「書き出し」フィールドセットを展開します。
  4. 虫眼鏡のアイコンをクリックして設定テンプレートを選択します。Geometrixx サイトのデフォルトである geometrixx テンプレートを選択します。「OK」をクリックします。
  5. OK」をクリックしてページのプロパティダイアログを閉じます。
  6. URL で htmlexport.zip に置き換えて、ページを要求します。
  7. <page-name>.export.zip ファイルを自身のファイルシステムにダウンロードします。
  8. ファイルシステムで、ファイルを解凍します。
    • ページの HTML ファイル(<page-name>.html)は、<unzip-dir>/<page-path> の下にあります。
    • その他のリソース(.js ファイル、.css ファイル、画像など)は、書き出しテンプレートの設定に従って配置されています。この例では、リソースは一部が <unzip-dir>/etc の下に、一部が <unzip-dir>/<page-path> の下にあります。
  9. ページの HTML ファイル(<unzip-dir>/<page-path>.html)をブラウザーで開いてレンダリングを確認します。

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

ページエクスポーターは、コンテンツ同期フレームワークに基づいています。ページのプロパティダイアログに表示される設定は、設定テンプレートです。ページに必要な依存関係をすべて定義します。ページの書き出しがトリガーされると、設定テンプレートが使用され、ページパスとデザインパスの両方が、設定に動的に適用されます。その後、標準のコンテンツ同期機能を使用して、zip ファイルが作成されます。

CQ では、以下を含むいくつかのテンプレートが埋め込まれます。

  • /etc/contentsync/templates/default にあるデフォルトのテンプレート。このテンプレートは、
    • リポジトリ内に設定テンプレートが見つからない場合のフォールバックテンプレートです。
    • 新しい設定テンプレートのベースとして使用できます。
  • Geometrixx サイト専用の、/etc/contentsync/templates/geometrixx にあるテンプレート。このテンプレートは、新しいテンプレートを作成するための例として使用できます。

ページエクスポーター設定テンプレートを作成するには:

  1. CRXDE Lite で、/etc/contentsync/templates の下にノードを作成します。
    • 名前:mysite など。この名前は、ページエクスポーターテンプレートを選択したときにページのプロパティダイアログボックスに表示されます。
    • タイプ:nt:unstructured
  2. テンプレートノード(ここでは mysite)の下に、以下で説明する設定ノードを使用してノード構造を作成します。

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

設定テンプレートはノード構造になっています。ノードごとに、zip ファイルの作成プロセスで特定のアクションを定義する type プロパティがあります。type プロパティについて詳しくは、コンテンツ同期フレームワークページの設定タイプの概要を参照してください。

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

page ノード

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

  • 必須ノードである。
  • /etc/contentsync/templates/<sitename> の下にある。
  • 名前は page である。
  • ノードタイプは nt:unstructured である。

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

  • pages という値が設定された type プロパティ。
  • path プロパティはありません。現在のページパスが設定に動的にコピーされます。
  • 他のプロパティについては、コンテンツ同期フレームワークの設定タイプの概要で説明しています。

rewrite ノード

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

rewrite ノードについて詳しくは、コンテンツ同期ページを参照してください。

design ノード

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

  • オプションである。
  • /etc/contentsync/templates/<sitename> の下にある。
  • 名前は design である。
  • ノードタイプは nt:unstructured である。

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

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

汎用ノード

汎用ノードは、クライアントライブラリの .js ファイルや .css ファイルのようなリソースを zip ファイルにコピーする際に使用します。次のような特徴があります。

  • オプションである。
  • /etc/contentsync/templates/<sitename> の下にある。
  • 特定の名前を持たない。
  • ノードタイプは nt:unstructured である。
  • type プロパティおよび type に関連するプロパティを持つ(コンテンツ同期フレームワークの設定タイプの概要で定義)。

例えば、以下の設定ノードでは、geometrixx クライアントライブラリの .js ファイルを zip ファイルにコピーします。

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

Geometrixx ページ書き出し設定テンプレートを見ると、ページ書き出しの設定方法がわかります。テンプレートのノード構造をブラウザーで json 形式で表示するには、以下の URL を要求します。

http://localhost:4502/etc/contentsync/templates/geometrixx.-1.json

カスタム設定の実装

お気付きかもしれませんが、ノード構造では、Geometrixx ページ書き出し設定テンプレートには logo ノードがあり、type プロパティが image に設定されています。これは、画像ロゴを zip ファイルにコピーするために作成された、特殊な設定タイプです。特定の要件を満たすために、カスタムの type プロパティの実装が必要になる場合があります。これをおこなうには、コンテンツ同期ページのカスタム更新ハンドラーの実装を参照してください。

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

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

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

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

トラブルシューティング

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

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー