4

EktronCMSバージョン8.5SP2を使用しています。

分類法にいくつかの項目があります。一部は実際のページであり、一部はライブラリアイテム(WordファイルやPDFなどのドキュメント)です。

私の分類法には、3ページと2つのライブラリアイテムがあり、合計5つのアイテムがあるとします。

私は次のコードを使用しています...

ContentManager cManager = new Ektron.Cms.Framework.Content.ContentManager();
Ektron.Cms.Content.ContentTaxonomyCriteria ctCriteria = new    Ektron.Cms.Content.ContentTaxonomyCriteria();
ctCriteria.AddFilter(1707, true); // hard coded taxonomy ID
List<ContentData> list = cManager.GetList(ctCriteria);
Label1.Text = list.Count.ToString();

このコードを実行すると、リスト内のアイテムの数は3になります。実際のリストを出力すると、2つのライブラリアイテムではなく、分類法のページのみであることがわかります。

ContentManager.getList()関数は、ライブラリアイテムが分類法に追加されている場合でも、それらのアイテムを取得しないようです。管理ワークエリアで、ライブラリアイテムが分類法に表示されていることを確認できます。

明確にするために、これは、分類法にすでに追加されているアイテムを取得する際の問題です。

分類法のすべてのアイテムのリストを取得する方法を知っている人はいますか?そこにあるライブラリアイテムも含まれます。

注:ファイルをライブラリではなくドキュメント管理システムに追加すると、完全に機能します。しかし、ライブシステムでは、ライブラリに何百ものアイテムがあり、それらをすべてDMSに移動することなく、分類法を介してそれらを表示する方法があることを望んでいます。

この質問はEktron開発者フォーラムにも投稿しましたが、返信はありません。ここの誰かが助けてくれることを願っています。

乾杯。

4

3 に答える 3

2

ContentManagerではなくTaxonomyItemManagerを調べます。

于 2012-09-12T23:40:27.830 に答える
2

TaxonomyItemManagerを使用するという@maddoxejの提案のおかげで、私は実用的なソリューションコードを持っています...

TaxonomyItemCriteria criteria = new TaxonomyItemCriteria();
criteria.AddFilter(TaxonomyItemProperty.TaxonomyId, CriteriaFilterOperator.EqualTo, 1707);
TaxonomyItemManager taxonomyItemManager = new TaxonomyItemManager();
List<TaxonomyItemData> taxonomyItemList = taxonomyItemManager.GetList(criteria);
Label1.Text = taxonomyItemList.Count.ToString();

このコードは「5」の予想カウントを示しており、すべてのitmesを表示できます:)

Ektronには非常に多くの「マネージャー」クラスがあります。

于 2012-09-13T23:23:48.953 に答える
2

@nedludの回答に対する先日のコメントのフォローアップですが、これは独自の回答に値するように感じました。

フレームワークAPIドキュメントによると:

タクソノミーに分類されているCMSアイテムを取得する場合は、TaxonomyItemManagerを使用します。

ただし、コメントですでに述べたように、このAPIによって返されるオブジェクトには、やTaxonomyItemDataなどの空のプロパティがいくつかあります。を使用すると、特定の分類カテゴリに割り当てられたアイテムを正常にクエリできることがわかりました。QuickLinkHtmlTaxonomyManager

フレームワークAPI(バージョン> = 8.5)を使用した簡単なスニペットを次に示します。これは、古い(バージョン<= 8.0)タクソノミーAPIを使用して作業することを彷彿とさせます。このAPITaxonomyRequestでは、タクソノミー自体だけでなく、そのタクソノミーに分類されたアイテムをカプセル化したオブジェクト構造を作成して取得します。

//e.g. for a single-level taxonomy

long taxRoot = 1707; //from OP's question
TaxonomyManager taxManager = new TaxonomyManager();
//GetTree overload supplying includeItems parameter
TaxonomyData taxTree = taxManager.GetTree(taxRoot, includeItems: true);

foreach(TaxonomyItemData taxItem in taxTree.TaxonomyItems)
{
    //these should print true
    Response.Write(!String.IsNullOrEmpty(taxItem.QuickLink));
    Response.Write(!String.IsNullOrEmpty(taxItem.Html));
}

現在、一部のバージョン8.0コードをバージョン8.6にリファクタリングし、FrameworkAPIに変換しています。EktronがnullプロパティでTaxonomyItemManager返される(バグ?)を修正するまでTaxonomyItemData、私は上記のメソッド+LINQをソート/フィルタリングなどに使用します。

于 2012-12-07T20:19:19.973 に答える