はミハイCadariuからこれら二つのブログの記事を見てください:次のことができるようにする必要があり、これらの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;
}
また、ときに比べPreviewModeまたはテンプレートビルダからコーダをレンダリングするときに、プロパティengine.PublishingContext.PublishInstruction.RenderInstruction.BinaryStoragePath
は別の何かを返すことは注目に値するかもしれませんコードはパブリッシャで実行されています。実際にPublishTransactionオブジェクトが存在するためには、BinaryStoragePathのPublishTransaction URIを確認するには、Visual Studio TBBデバッグプロジェクトをTcmPublisher.exe
プロセスに添付する必要があります。そうしないと、BinaryStoragePathには../previewのような汎用パスが含まれます。
私はMihaiとChrisのコードを追加して素晴らしいです。今はPublishTransactionを持っています - ありがとうございます – GourmetCMS