Sitecore에 사용자 지정 게시 프로세서를 작성하여 항목이 게시 된 정확한 날짜와 시간을 기록 할 수 있습니다. 내가 사용하고있는 코드 (Uli Welterbach의 코드 here)는 오류를 발생시키지 않지만 실제로 게시되는 항목의 ID를 제공하지는 않습니다. 내가 도대체 뭘 잘못하고있는 겁니까?Sitecore 게시 프로세서에서 게시 할 항목의 ID 가져 오기
public class PublicationProcessor : PublishProcessor
{
public override void Process(PublishContext context)
{
Assert.ArgumentNotNull(context, "context");
var cqs = context.Queue.ToList();
string connectionString = "Data Source=MyServer;initial catalog=AuditHistory; User ID=sa;Password=123456789;Integrated Security=false;";
var query = @"INSERT INTO [dbo].[ItemHistory]
([ItemID])
VALUES
(@ItemId)";
using (SqlConnection cn = new SqlConnection(connectionString))
{
foreach (var itemId in GetPublishQueueItems(context.PublishOptions))
{
using (SqlCommand cmd = new SqlCommand(query, cn))
{
// define parameters and their values
cmd.Parameters.Add("@ItemId", SqlDbType.UniqueIdentifier, 50).Value = itemId.ToGuid();
// open connection, execute INSERT, close connection
cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
}
}
}
}
private IEnumerable<ID> GetPublishQueueItems(PublishOptions options)
{
if (options.Mode == PublishMode.Incremental)
return PublishQueue.GetPublishQueue(options).Select(candidate => candidate.ItemId).ToArray();
return PublishQueue.GetContentBranch(options).Select(candidate => candidate.ItemId).ToArray();
}
을 시도 할 수 있습니다. 감사! 그러나, 그것을 실행할 때 context.VersionToPublish 항상 null입니다. 그 이유가 뭔지 아십니까? – Ash8087
좋아요. VersionToPublish는 항목이 게시 된 후에 사용할 수 있습니다. 'publish : itemProcessed'에 연결하면 VersionToPublish는 null이되지 않습니다. –