我不太理解您的陈述,是发布到特定出版物的。页面驻留在出版物中,并且可以发布到一个或多个出版物目标(如果页面是蓝印的,可以对页面所在的每个出版物执行此操作)。
因此,要确定某个页面是否已发布,您需要检查它是否已发布到至少一个目标。您可以通过 OrganizationalItemItemsFilter 直接在列表中执行此操作。返回的列表将显示每个项目是否已发布:
<tcm:Item ID="tcm:2-46-64" Title="p" Type="64" Modified="2012-03-19T16:21:10" IsNew="false" Icon="T64L0P0" IsPublished="false" Lock="0" IsShared="false" IsLocalized="false" Trustee="tcm:0-0-0" />
在这里您可以看到 Page tcm:2-46-64 没有发布。如果我们进一步调查该页面的唯一 ID,我们会发现它位于 Publication tcm:0-2-1 中(出版物 ID 是项目的 TCM URI 中的第一个数字)。
现在,如果 IsPublished 属性的值为“true”,这将表明该页面(在其出版物中)已发布到至少一个目标。
要找出该页面发布到哪个目标,您可以使用 PublishEngine.IsPublished 方法。您需要指定为第一个参数的 IdentifiableObject 将是您的 Page。我们谈论的是共享(BluePrinted)、本地化还是本地项目都没有关系。在这种情况下,您的页面的 TCM URI 中的出版物 ID 将告诉您该页面是从哪个出版物发布的。
请注意,您需要使用第三个重载:IsPublished(IdentifiableObject item, PublicationTarget publicationTarget, bool isPublishedInContext) 并将最后一个参数设置为 true。这将只为您提供指定项目的发布状态,而不是其任何(蓝图)父项或子项的发布状态。