9

从 SDL Tridion 2011 中模块化页面模板使用的 C# TBB 中,是否可以访问启动发布操作的用户对象?

查看TOM.NET 6 Programmers Reference Guide,似乎我需要的Creator属性是PublicationTransaction对象的属性,但我找不到从 C# TBB 访问它的方法,我没有看到明显的方法PublicationTransactionengineor对象中获取电流package,我只能找到一种PublicationTransaction使用PublishEngine对象获取对象列表的方法。

任何建议将不胜感激。

4

1 回答 1

10

看看 Mihai Cadaru 的这两篇博客文章:

有了这两个,你应该能够找到你需要的东西。

您在 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在 Publisher 中运行代码时相比,在 PreviewMode 或从模板生成器呈现编码器时,该属性将返回不同的东西。要查看 BinaryStoragePath 中的 PublishTransaction URI,您必须将 Visual Studio TBB 调试项目附加到TcmPublisher.exe进程,以便实际存在 PublishTransaction 对象,否则 BinaryStoragePath 将仅包含通用路径,如 ../preview。

于 2012-07-27T00:48:06.247 回答