我正在从主数据库的Sitecore导出数据。它从特定类型的项目获取数据并将其放入自定义XML中。我能够生成我需要的XML,但现在客户请求不是从最新版本返回数据,而是从在执行导出时发布站点时发布的版本返回数据。从主数据库获取Sitecore项目,即现在发布网站时将发布的版本
该网站的性质是,它必须定期发布但不频繁(每年一次,我相信),但数据将被持续保存,Sitecore中任何已批准的内容都需要添加到另一个系统中,所以不幸的是,从Web数据库导出不是一种选择。我希望能够挂钩Sitecore用来决定哪些版本进入Web数据库的时间/发布情况而不实际发布。
我已经看过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处于Approved状态且版本2处于Draft状态时,我只能在XML中获得版本2。
我误解了这些方法的用途或者滥用它们吗?
我同意马克......如果您要导出已发布的内容,请从已发布的数据库中执行此操作。 – techphoria414 2012-03-07 04:14:37
不幸的是,我不能只发布到Web数据库的项目。网站的性质是它必须定期但不频繁地发布(每年一次或两次),但数据将持续保存,Sitecore中的任何内容都需要添加到其他系统中。将编辑该问题来澄清。我会研究其他发布目标的想法,非常感谢。 – fwkb 2012-03-07 14:14:19
您是否认为使用此导出数据库的想法会更快地开发,或者由于其他原因而更好地进行开发,而不是最早迭代到最新版本并检查每个版本是否处于最终状态?如果我找不到可以实现相同效果的Sitecore方法,那就是我要去的地方。 – fwkb 2012-03-07 14:21:51