9

SDL Tridion 2011のモジュラーページテンプレートで使用されるC#TBBから、公開アクションを開始したUserオブジェクトにアクセスできますか?

TOM.NET 6プログラマーリファレンスガイドを見ると、必要なCreatorプロパティはオブジェクトのプロパティのPublicationTransactionようですが、C#TBBからアクセスする方法が見つからないため、次のような明確な方法がわかりません。またはオブジェクトPublicationTransactionから電流を取得します。オブジェクトを使用してオブジェクトのリストを取得する方法しか見つかりません。enginepackagePublicationTransactionPublishEngine

アドバイスをいただければ幸いです。

4

1 に答える 1

10

MihaiCadariuからの次の2つのブログ投稿をご覧ください。

これらの2つを使用すると、必要なものを見つけることができるはずです。

TBBに必要な基本機能は次のとおりです。

public PublishTransaction GetPublishTransaction(Engine engine)
{
    String binaryPath = engine.PublishingContext.PublishInstruction.
                                         RenderInstruction.BinaryStoragePath;
    Regex tcmRegex = new Regex(@"tcm_\d+-\d+-66560");
    Match match = tcmRegex.Match(binaryPath);

    if (match.Success)
    {
        String transactionId = match.Value.Replace('_', ':');
        TcmUri transactionUri = new TcmUri(transactionId);
        return new PublishTransaction(transactionUri, engine.GetSession());
    }

    return null;
}

engine.PublishingContext.PublishInstruction.RenderInstruction.BinaryStoragePathまた、PreviewModeで、またはTemplate Builderからコーダーをレンダリングする場合、コードがPublisherで実行されている場合と比較して、プロパティが異なるものを返すことにも注意してください。BinaryStoragePathでPublishTransactionURIを表示するには、Visual Studio TBBデバッグプロジェクトをTcmPublisher.exeプロセスにアタッチして、実際にPublishTransactionオブジェクトが存在するようにする必要があります。そうしないと、BinaryStoragePathに../previewなどの汎用パスが含まれるだけです。

于 2012-07-27T00:48:06.247 に答える