Sitecore:当项目处于发布限制期间时,获取父项的子项

时间:2012-02-24 09:29:50

标签: sitecore

我正在尝试获取项目的子项目,其中一些子项目已应用发布限制,并且结束日期已过期。 我想收集所有子项目,无论它是否已过期。 当我调试我的代码时,我只得到那些有结束日期的项目。 我使用了以下代码

var childItems=item.GetChildren();

子项集合仅收集那些有结束日期的子项目。

有没有收集所有项目的方法?

我在sitecore论坛上问过,他们要求从master数据库中获取子项,但这种方法也无效。我也尝试过以下代码。

Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");
Item parentNode= master.GetItem("ItemNAme");
var childItems=parentNode.GetChildren();

子项目仅收集结束日期未过期的子项目 请为我建议一些解决方案

提前致谢

-Vaibhav

2 个答案:

答案 0 :(得分:2)

关于转到master数据库的说法是正确的,因为master包含所有内容的所有版本,而不仅仅是公开发布的内容。我会将您的代码包装在SecurityDisabler()中,以防以某种方式干扰获取正确的项目。

using(new SecurityDisabler()) {
    Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");
    Item parentNode= master.GetItem("ItemNAme");
    var childItems=parentNode.GetChildren();
}

答案 1 :(得分:0)

您发现此问题的原因与安全性无关。

当IsPreview为true(基于cookie)并且允许对网站配置进行过滤时,您将无法获得具有发布限制的项目。此功能来自PageEditor Preview的实现,您需要在其中浏览主数据库,就像发布的项目不可见一样。

查看Sitecore Publishable flag makes it impossible to GetItem() from Master database

上的答案