Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get the published timestamp of a page or component using SDL Tridion TOM.NET API

Tags:

tridion

I'm trying to get hold of the published timestamp for a given page or component to a given target using the TOM.NET API. It isn't immediately obvious under the Page or Component object, can someone point me in the right direction?

like image 808
johnwinter Avatar asked Apr 10 '12 15:04

johnwinter


2 Answers

You can use the PublishEngine.GetPublishInfo(IdentifiableObject) method for that, it returns a collection of PublishInfo objects which holds the dates and other (publish) information available for the given item.

like image 138
Bart Koopman Avatar answered Oct 16 '22 05:10

Bart Koopman


Thanks to Bart's answer above, I've knocked up the following rough code. It's not about performance as this is a proof of concept to demo something to a customer:

// if we are in publishing mode, figure out the target we are publishing to, and get the timestamp that the page is published to this target
if (engine.PublishingContext.PublicationTarget != null)
{
  ICollection<PublishInfo> publishCollections = PublishEngine.GetPublishInfo(childPage);
  foreach (PublishInfo publishInfo in publishCollections)
  {
     if (publishInfo.PublicationTarget == engine.PublishingContext.PublicationTarget)
     {
        pageElem.SetAttribute("timestamp", publishInfo.PublishedAt.ToString());
     }
   }
}

Here you can see I already have my childPage object, and i'm adding the result to an existing page XML object (pageElem.SetAttribute("timestamp", publishInfo.PublishedAt.ToString())) - so if using this snippet look out for these items :)

like image 41
johnwinter Avatar answered Oct 16 '22 06:10

johnwinter