我不是真正理解你的陈述,而是发表到特定的出版物。一个页面驻留在一个发布中,并且可以发布到一个或多个发布目标(并且这可以针对页面驻留的每个发布完成,以防蓝色打印)。
因此,要确定某个页面是否已发布,您需要检查它是否已发布到至少一个目标。这可以通过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" />
这里可以看到,页面中医认为:2-46-64尚未发布。如果我们进一步调查该页面的唯一ID,我们会看到它驻留在Publication tcm:0-2-1(发布ID是项目的TCM URI中的第一个数字)。
现在,如果属性IsPublished的值为“true”,则表示此页面(在其发布中)至少会发布到一个目标。
要找出该页面发布到哪个目标,可以使用PublishEngine.IsPublished方法。您需要指定为第一个参数的IdentifiableObject将是您的Page的参数。如果我们正在讨论共享(BluePrinted),本地化或本地项目,则无关紧要。您的Page的TCM URI中的发布ID会告诉您在这种情况下从哪些发布中发布页面。
请注意,您需要使用第三个重载:IsPublished(IdentifiableObject item,PublicationTarget publicationTarget,bool isPublishedInContext)并将最后一个参数设置为true。这将仅为您指定项目的发布状态,而不是其任何(BluePrint)父母或子女。
您可以指定是否使用基于COM的TOM或TOM.NET API?我假设你正在使用TOM.NET,因为IsPublishedTo仍然在TOM API – 2012-03-19 14:54:53