4

Custom Deployer で公開されたページのコンテンツにアクセスする必要があるとしましょう。コードのこの部分は、PageDeploy クラスを拡張する CustomModule にある processPage メソッド内にあります。

このようにして、公開されているページを取得しますが、そのページのコンテンツは変換されません (そのページにあるコンポーネントはレンダリングされません)。

public void processPage(Page page, File pageFile) throws ProcessingException {
    File file = new File(pageFile.toString());
}

cd_deployer.conf.xml で TransportPackages のクリーンアップを無効にできることがわかっている場合は、Cleanup を false に変更します。Tridion が<WorkFolder Location="C:\tridion\work" Cleanup="false"/>, ページの 2 つのバージョンを生成することがわかります。

  1. root\page.html (パスが pageFile.ToString() のレンダリングされていないコンテンツを含む)
  2. root\transformed\page.html (完全なコンテンツ - 必要なコンテンツ)

変換されたページ ファイル パスを使用して新しいファイルを作成し、それを読み取ると、元の html よりもコンテンツが少ない html コードを取得するのはなぜですか? これは、展開ページのこのフェーズではまだレンダリングされておらず、完全ではないためですか...?

ありがとう!

4

1 に答える 1

3

あなたのページは動的コンポーネント プレゼンテーションを使用していますか? その場合、公開および展開されるページ レベルの HTML には、コンポーネント プレゼンテーションの「インクルード命令」のみが含まれます。

<tcdl:ComponentPresentation ... />

展開中に発生する唯一のことは、発行/トランスポート中に使用される「テクノロジに依存しない」言語が、JSP タグまたは ASP.NET サーバー コントロール インクルードのいずれかに変換されることです。どちらの場合も、通常は で始まるものに変換されtridion:ComponentPresentationます。

動的コンポーネント プレゼンテーション自体の HTML フラグメントは、個別に公開され、構成されたストレージに個別のアイテムとして保存されます。

完全な HTML は、(訪問者に提供するために) ページが要求されたときにのみ作成されます。その段階で、JSP タグ ライブラリまたは ASP.NET サーバー コントロールが呼び出され、ストレージからコンポーネント プレゼンテーションの HTML フラグメントが読み取られ、ページの HTML「ワイヤーフレーム」に挿入されます。

その知識があれば、Deployer 拡張機能で Dynamic Component Presentations の HTML フラグメントが見つからない理由が説明されます。DCP フラグメントのページ シェルへのマージは、ページがデプロイされたときではなく、要求されたときにのみ発生します。

于 2012-07-26T14:18:27.017 に答える