5

この質問について、次の出版物を想定しましょう。

20コンテンツ->tcm:0-20-1

…</p>

…</p>

…</p>

70 Web-> tcm:0-121-1

( 20コンテンツ)パブリケーションで作成されたコンポーネントがあり、子パブリケーション(70 Web)の1つからこのコンポーネントを公開しています。Dreamweaverテンプレートを使用してUIを記述し、DWTからC#カスタム関数を呼び出しています。公開中、このコンポーネントはコンポーネントの表示では121-432と呼ばれます。コンポーネントが作成された場所のルートパブリケーションを取得する方法はありますか?つまり、121-432を取得するのではなく、20-432を取得する必要があります。

Component .GetBluePrintChain()を試しましたが、すべてのブループリント階層を含むリストが返されます。このリストから最初のアイテムを取得して、実際に作成されたパブリケーションでこのコンポーネントを取得できます。

多くの場所でこのメソッドを呼び出す必要があるので、これを実行するための他の直接/より良い方法があるかどうかを確認したかっただけです。

誰か提案できますか?

4

1 に答える 1

7

OwningRepositoryコンポーネントのプロパティを確認する必要があるので、次のようにします。

var componentIdInOwningPublication = new TcmUri(
    component.Id.ItemId,
    ItemType.Component,
    component.OwningRepository.Id.ItemId
);

それをカスタムのDreamweaver呼び出し可能関数に入れると、うまくいくはずです。

更新CreateTcmUriForPublication翻訳を行う と呼ばれるヘルパーメソッドもありしたがって、次のように呼び出すこともできます。

var componentIdInOwningPublication = TemplateUtilities.CreateTcmUriForPublication(
    component.OwningRepository.Id.ItemId,
    component.Id
);

ただし、両方のスニペットの最終結果は同じです。所有するリポジトリのコンテキストでのコンポーネントのTcmUriです。

于 2012-10-30T01:06:08.790 に答える