【发布时间】:2012-03-24 12:41:20
【问题描述】:
我正在从主数据库中的 Sitecore 导出数据。它从特定类型的项目中获取数据并将其放入自定义 XML。我能够生成我需要的 XML,但现在客户要求它不是从最新版本返回数据,而是从如果在执行导出时发布站点时将发布的版本返回数据。
该网站的性质是它必须定期但不频繁地发布(我相信一年一次),但数据将持续维护,并且 Sitecore 中批准的任何内容都需要添加到另一个系统中,所以这样做不幸的是,不能从网络数据库中导出。我希望在没有实际发布的情况下进行发布时/如果发布时使用 Sitecore 用来决定哪个版本进入 Web DB 的任何机制。
我查看了Item.Publishing.GetValidVersion、IsValid 和IsPublishable,但未能成功使用它们。我已经阅读了这些方法的 Sitecore 文档,但描述只是说“获取有效版本”。我不确定“有效”是什么意思。
这是我最近的尝试:
foreach (Sitecore.Data.ID courseId in courseIds)
{
Sitecore.Data.Items.Item course = master.GetItem(courseId);
string initialVersion = course.Version.ToString();
if (course != null & course.Parent.Name != "Narrative-Courses")
{
course = course.Publishing.GetValidVersion(DateTime.Now, true, true);
string finalVersion = course.Version.ToString();
if (initialVersion != finalVersion)
{
log(course.Name + ": " + initialVersion + ", " + finalVersion);
}
if (course != null)
{
//add xml for this item
...
我的日志是空白的,我的 XML 包含每个项目的最高版本号,无论工作流状态如何。当一个项目的版本 1 处于已批准状态而版本 2 处于草稿状态时,我只能在 XML 中获得版本 2。
我是误解了这些方法的用途还是只是滥用了它们?
【问题讨论】:
标签: sitecore