循环文件夹级别

时间:2012-07-12 15:51:59

标签: tridion tridion-2011

我在文件夹下有组件。

需要遵循什么代码/ codesyntax,循环一个包含组件的文件夹,以便我可以从不同的组件中提取值。

任何人都可以帮助我。

我使用了以下代码

**Folder compFilter= new Filter(); 
Folder folder=engine.GetObject(webdavurl) as Folder; 
foreach(Component comp in folder.GetItems(CompFilter))**

它不起作用。请提出一些解决方案。

2 个答案:

答案 0 :(得分:5)

逻辑如下:

  1. 创建一个过滤器,指定您感兴趣的项目类型是“组件”
  2. 从文件夹中获取项目或获取列表项目,具体取决于您需要的信息。如果您只需要标题和ID,则获取列表会更快(返回XML)。如果您需要来自项目的其他属性,请使用返回对象的Get Items。
  3. 如上所述,如果您告诉我们您可能获取代码示例的API。以上逻辑适用于任何API。

    [更新]

    请不要使用Filter,此类已在Tridion 2011中弃用,而不是StronglyTypedFilter“系列”。

    Session session = engine.GetSession();
    string folderUrl = "/my/long/webdav";
    OrganizationalItemItemsFilter filter = new OrganizationalItemItemsFilter(session)
                                                {ItemTypes = new[] {ItemType.Component}};
    
    Folder folder = (Folder)session.GetObject(folderUrl);
    
    foreach (Component component in folder.GetItems(filter))
    {
        // Do something with the component
    }
    

答案 1 :(得分:4)

如何使用2011 TOM.NET API循环文件夹并转到组件的简单示例如下:

OrganizationalItemItemsFilter filter = new OrganizationalItemItemsFilter(folder.Session)
{
    ItemTypes = new[] {ItemType.Component},
    Recursive = false
};
foreach (Component comp in folder.GetItems(filter))
{
    // get fields collection of component
    ItemFields fields = new ItemFields(comp.Content, comp.Schema);
}

但是如果你还没有这么做,我强烈建议你看一下SDL Tridion World上的所有构建模块(它们包含很多示例代码,可以帮助你理解如何使用不同的API)或按照可用的training's进行操作,不要忘记documentation(需要登录,有关如何访问的详细信息,请参阅http://docportal.sdl.com/sdltridion