-9

フォルダーの下にコンポーネントがあります。

コンポーネントを持つフォルダーをループして、さまざまなコンポーネントから値を取得できるようにするために、どのコード/コード構文に従う必要がありますか。

誰でも私を助けてくれませんか。

次のコードを使用しました

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

機能していません。解決策を提案してください。

4

2 に答える 2

5

ロジックは次のとおりです。

  1. 関心のある項目タイプがコンポーネントであることを指定するフィルターを作成します
  2. 必要な情報に応じて、フォルダーからアイテムを取得するか、リスト アイテムを取得します。タイトルと ID だけが必要な場合は、Get List の方が高速です (XML を返します)。アイテムから追加の属性が必要な場合は、オブジェクトを返す Get Items を使用します。

前述のとおり、どの 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
}
于 2012-07-12T16:04:05.327 に答える
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 の使用方法を理解するのに役立つサンプル コードが多数含まれています) を確認するか、利用可能なトレーニングに従うことを強くお勧めします。ドキュメントを忘れないでください(ログインが必要です。アクセス方法の詳細については、http://docportal.sdl.com/sdltridionを参照してください)。

于 2012-07-12T16:09:46.843 に答える