2011-12-05 10 views
3

Sitecoreのコンテンツツリーに次のような構造を作成しました: テンプレートに基づくホームルートアイテムです。それから私は、ホームアイテムの下に日付で命名された一連のフォルダを持っています。コンテンツツリー内のフォルダにsitecoreアイテムを移動しようとしています

ホームアイテムの下に新しいアイテムを追加すると、自動的に現在の日付で表されるフォルダの下に移動するようにコマンドテンプレートを作成しています。

ただし、Itemクラス 'MoveToメソッドはパラメータとしてItemのみをとります。だから私はどのようにフォルダをItemとして表現することができないので、ItemをFolderに移動するよう指示するのか分かりません。

私はいくつかの掘り下げを行いました。アイテムを直接フォルダの下に置くと、ホームアイテムの下に直接置く場合と違ったParentIDが表示され、実際にはFolderが実際に項目。しかし、Folderで表されるItemを取得しようとすると、nullが返されます。

サイトコアでSitecore.Context.Database.Items["/sitecore/content/Home/30Nov2011"];

答えて

5

すべてが項目(偶数フォルダ)である、あなたはDatabaseオブジェクトを使用して、そのpathまたはGUIDに基づいてアイテムとしてフォルダを解決することができます。

var currentDb = Sitecore.Data.Database.GetDatabase("master"); 
var folderItem = currentDb.GetItem("/sitecore/content/Home/30Nov2011"); 
Sitecore.Context.Item.MoveTo(folderItem); 

編集:あなたがコンテンツエディタ環境で作業しているとして、あなたは明示的に(この場合はmasterデータベース)を使用するデータベースにそれを伝える必要がありますContextスコープとしてあなたがいるデータベースは含まれません一緒に働くことを望んでいる。

これが役に立ちます。

+0

それはそれでした。奇妙なのは、ホームアイテムのアイテムを取得したときに、それが機能したが、フォルダのためにnullが返されたということです。確かに、それは私はそれを働いていたDBを知っていない場合、両方のnullを返す必要がありますか?いずれにせよ、ここに与えられたコードは機能します。助けてくれてありがとう:) – Garnaph

+0

コンテキストスコープ(コアまたはシェル)に接続されているDBにも 'ホーム'アイテムがありますが、IDは 'マスター'アイテムの 'ホーム' dbとは全く異なるアイテムです。 –

関連する問題