2012-04-10 1 views
5

Я пытаюсь получить опубликованную метку времени для данной страницы или компонента для заданной цели с использованием API TOM.NET. Не сразу очевидно, что объект Page или Component, может ли кто-нибудь указать мне в правильном направлении?Как получить опубликованную метку времени страницы или компонента с помощью SDL Tridion TOM.NET API

+1

Можете ли вы объяснить, когда вы пытаетесь получить доступ к этой информации? Это когда страница или компонент визуализируется или в какой-то более поздний момент после публикации? Вам также нужно знать эту информацию для конкретной цели? –

ответ

7

Для этого вы можете использовать метод PublishEngine.GetPublishInfo(IdentifiableObject), он возвращает коллекцию объектов PublishInfo, которая содержит даты и другую (опубликованную) информацию, доступную для данного элемента.

2

Благодаря ответу Барта выше, я выбил следующий примерный код. Речь не идет о производительности, как это доказательство концепции демо-то клиент:

// 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()); 
    } 
    } 
} 

Здесь вы можете увидеть у меня уже есть childPage объекта, и я прибавление результата к существующему объекту страницы XML (pageElem.SetAttribute("timestamp", publishInfo.PublishedAt.ToString())), поэтому, если этот фрагмент будет выглядеть так: