Tridion: Как я могу узнать, была ли страница опубликована для определенной цели публикации с использованием бизнес-коннектора? - PullRequest
8 голосов
/ 22 февраля 2012

Я использую Tridion версии 5.3.

Используя бизнес-коннектор, я хочу выяснить, была ли страница опубликована для определенной цели публикации.

Используя TOM API, я могу сделать

// using types from Tridion.ContentManager.Interop.TDS
// and Tridion.ContentManager.Interop.TDSDefines
TDSE tdse = new TDSE();
Page page = (Page)tdse.GetObject(itemUri, EnumOpenMode.OpenModeView, 
                                 "tcm:0-0-0", XMLReadFilter.XMLReadAll);
page.IsPublishedTo(tcm);

Если я запрашиваю Tridion с использованием бизнес-коннектора, единственная информация, которую я получаю, - это если страница была опубликована, но не на какие цели.

Я пытался запросить саму цель публикации, но это не дает информации о том, какие страницы она опубликовала.

Есть идеи?

Ответы [ 2 ]

6 голосов
/ 22 февраля 2012

Вы должны установить XMLReadPublishInfo и XMLReadPublishInfoDetails ItemFilters:

<tcmapi:Message xmlns:tcmapi="http://www.tridion.com/ContentManager/5.0/TCMAPI"
                version="5.0" from="[MDVC.js][CmdsExecute]" failOnError="false">
<tcmapi:Request ID="tcm:1010-8314-64" preserve="true">
    <tcmapi:GetItem itemURI="tcm:1010-8314-64" openMode="OpenModeView">
        <tcmapi:ItemFilter type="XMLReadPublishInfo" />
        <tcmapi:ItemFilter type="XMLReadPublishInfoDetails" />
    </tcmapi:GetItem>
</tcmapi:Request>

Это вернет всю информацию о публикации, и оттуда вам придется фильтровать ее самостоятельно. Вот пример ответа:

<tcmapi:Message xmlns:tcmapi="http://www.tridion.com/ContentManager/5.0/TCMAPI"
               version="5.0" from="[MDVC.js][CmdsExecute]" failOnError="false">
<tcmapi:Response ID="tcm:1010-8314-64" success="true" actionWF="false">
  <tcmapi:Request ID="tcm:1010-8314-64" preserve="true">
    <tcmapi:GetItem itemURI="tcm:1010-8314-64" openMode="OpenModeView">
      <tcmapi:ItemFilter type="XMLReadPublishInfo" />
      <tcmapi:ItemFilter type="XMLReadPublishInfoDetails" />
    </tcmapi:GetItem>
  </tcmapi:Request>
  <tcmapi:Result>
    <tcm:Page ID="tcm:1010-8314-64" IsEditable="false"
              xmlns:tcm="http://www.tridion.com/ContentManager/5.0"
              xmlns:xlink="http://www.w3.org/1999/xlink">
      <tcm:Info>
        <tcm:PublishInfo>
          <tcm:IsPublished>true</tcm:IsPublished>
          <tcm:PublishState>
            <tcm:Publication xlink:type="simple" xlink:title="Web: "
                             xlink:href="tcm:0-1010-1" />
            <tcm:PublicationTarget xlink:type="simple" xlink:title="A"
                                   xlink:href="tcm:0-143-65537" />
            <tcm:Date>2006-01-30T11:22:58</tcm:Date>
            <tcm:Publisher xlink:type="simple" xlink:title="NA\A085159"
                           xlink:href="tcm:0-220-65552" />
          </tcm:PublishState>
        </tcm:PublishInfo>
      </tcm:Info>
    </tcm:Page>
  </tcmapi:Result>
</tcmapi:Response>

3 голосов
/ 22 февраля 2012

Для быстрой проверки вот что я бы сделал.

  1. Установите CMS в режим отладки.
  2. Открыть страницу вопроса
  3. Показать, где используется в графическом интерфейсе.
  4. Перейти на вкладку «Опубликовать» 5) После шага 4 не нажимайте ничего, кроме значка окна отладки. Захватите запрос BC XML, который вы видите там, и обновите параметры, такие как идентификатор страницы и т. Д., И сделайте запрос, используя BC для ваших страниц.

Выше должно работать.

...