2011-12-05 19 views
3

我在Sitecore的内容树中创建了如下结构: 基于模板的Home根项目。然后,我在Home项下有一系列文件夹,以日期命名。尝试将sitecore项目移动到内容树中的文件夹中

我创建了一个命令模板,当我在Home项目下添加一个新项目时,它会自动将它移动到当前日期所代表的文件夹下。

但是,Item类'MoveTo方法仅将Item作为参数。所以我不知道如何告诉它将项目移动到文件夹中,因为文件夹不能表示为项目?

我已经做了一些挖掘工作,并且我已经看到,当我直接在文件夹下放置一个项目时,它会显示与直接放在Home项下的不同ParentID,这意味着该文件夹确实是一个项目。但是,当我尝试检索由文件夹表示的项目时,我会得到空值。

例如Sitecore.Context.Database.Items["/sitecore/content/Home/30Nov2011"];

回答

5

一切都在Sitecore的是一个项目(甚至是文件夹),您可以根据其pathGUID使用Database对象解决文件夹中的项目。

var currentDb = Sitecore.Data.Database.GetDatabase("master"); 
var folderItem = currentDb.GetItem("/sitecore/content/Home/30Nov2011"); 
Sitecore.Context.Item.MoveTo(folderItem); 

编辑:当您在内容编辑器的环境中工作,你需要明确告诉它使用的数据库(在这种情况下,master数据库)作为Context范围将不包含你的数据库希望能与之合作。

希望这会有所帮助。

+0

是的,它做到了。奇怪的是,当我为我的Home项目检索项目时,它工作正常,但对于该文件夹,它返回null。当然,如果它不知道我正在使用哪个数据库,它应该已经返回null了?无论如何,这里给出的代码有效。感谢您的帮助:) – Garnaph

+0

您可能会发现在上下文范围(核心或外壳)中连接的数据库也有一个“主页”项目,但该ID与“主”项目中的“主页”项目不同,分贝,因为它将是一个完全不同的项目。 –

相关问题