2016-06-17 6 views
0

Brandsタクソノミーフィールドを持つStoreというカスタムコンテンツタイプがあります。 Storeには複数のBrandsが関連付けられています。オーチャード - プログラムでカスタムコンテンツタイプのタクソノミーフィールドにアクセスする方法

私は、ユーザーが新しいStoresとそれに関連するBrandsを含むCSVファイルをアップロードできるようにするインポート/エクスポートルーチンを構築することが任されています。

ストアの他のフィールドはOKですが、分類フィールドを設定する方法はありませんか?

カスタムコンテンツタイプの分類フィールドにどのようにアクセスすればよいですか?

ありがとうございます。

+0

Orchardは(分類法の特定のインポート手順を含む)インポートをサポートしているため、カスタムcsv形式を標準のオーチャードインポート形式に変換して結果をインポートするのは最も簡単ではありませんか? –

+0

ありがとう@BertrandLeRoy、それはそんなことは考えられませんでした。残念ながら、私は、インポート/エクスポートのものを学ぶ時間がありませんが、次回は1つです。まもなく代替ソリューションを投稿します... – ed13

答えて

0

でも、インポート/エクスポート機能を使用する方が良い方法かもしれませんが、オーチャードの相対的なnoobとして、私はそれを見て回る時間がなく、見つけられませんでした良いチュートリアルです。

次に、TaxonomyServiceを使用してProgramItemでContentItemに用語を割り当てる代わりの方法を示します。

まず、コンストラクタにContentManagerTaxonomyServiceを注入...

private ITaxonomyService _taxonomyService; 
private IContentManager _contentManager; 

public MyAdminController(IContentManager contentManager, ITaxonomyService taxonomyService) 
{ 
    _contentManager = contentManager; 
    _taxonomyService = taxonomyService; 
} 

あなたのContentItem &を作成は、今、私たちはと仕事をするのContentItemを持っているタイトルに

var item = _contentManager.New("MyContentType"); 
item.As<TitlePart>().Title = "My New Item"; 

_contentManager.Create(item); 

を設定します。あなたの分類は、&があなたの用語を見つける...

var taxonomy = _taxonomyService.GetTaxonomyByName("Taxonomy Name"); 
var termPart = _taxonomyService.GetTermByName(taxonomy.Id, "Term Name"); 

タイプTermPartのリストに用語を追加...

List<TermPart> terms = new List<TermPart>(); 
terms.Add(termPart); 

最後に、のContentItemに渡し、UpdateTermsを呼び出す取得する時間、割り当てるターム、および更新するContentItemのフィールド名...

これは誰かを助けることを望みます。おそらく私は次の時間に! :)

関連する問題