2012-07-12 86 views
-8

我有文件夾下的組件。循環瀏覽文件夾級別

需要遵循什麼代碼/代碼語法來循環訪問具有組件的文件夾,以便我可以從不同的組件獲取值。

任何人都可以幫助我。

我用下面的代碼

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

它提出了一些解決方案。

+1

請指定Tridion的版本以及腳本或模板中的代碼以及模板中的模板語言。 – robrtc 2012-07-12 16:01:13

+1

編寫C#代碼。版本2011 – user1518281 2012-07-12 16:04:37

+3

代碼示例的第一行包含一個問題。 compFilter對象不是類型文件夾 這裏的C#示例http://www.tridiondeveloper.com/search-engine-sitemap-xml-generation-using-sdl-tridion顯示瞭如何遍歷結構和頁面,只需轉換對於文件夾和組件 – johnwinter 2012-07-12 16:10:46

回答

5

的邏輯如下:

  1. 創建一個過濾器,指定你感興趣的項目類型是組件
  2. 獲取項目或從文件夾中獲取列表項,取決於你所需要的信息。如果您只需要標題和ID,則獲取列表會更快(返回XML)。如果您需要項目中的其他屬性,則使用Get Items返回對象。

如前所述,如果你讓我們知道哪些API,您可以得到一個代碼示例。以上邏輯適用於任何API。

[更新]

請不要使用Filter,這個類在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 
} 
+0

非常感謝Nuno的解釋。它幫助了我。 – user1518281 2012-07-13 14:47:16

+1

不客氣。做一個好公民接受答案 - 這將有助於其他人提出同樣的問題。 – 2012-07-13 16:55:23

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有關如何訪問的詳細信息)

+0

感謝巴特工作! – user1518281 2012-07-13 14:45:44