同じ「深さ」で同じテンプレートを特徴とするデータ構造がsitecoreにあります。ユニット、レッスン、アクティビティを特徴とするクラスルームコンテンツを次の構造で作成しています。
Unit 1
-- Lesson 1
---- Activity 1
---- Activity 2
-- Lesson 2
---- Activity 3
---- Activity 4
Unit 2
-- Lesson 3
---- Activity 5
---- Activity 6
-- Lesson 4
---- Activity 7
---- Activity 8
等々。activity
アイテムを使用しているときにactivity
、その特定のアイテムを返しunit
、そのユニットにアクティビティがない場合はnullを返します。
私がこれまでにできた最善のことは、現在のアクティビティunit
の祖先(簡単に見つけられる)をターゲットにactivities
して、その下にあるすべてのものを取得し、それらすべてをループして前/次のアクティビティを取得することです。これを達成するためのより良い方法があるに違いないように思われるので、私はアイデアのためにそれをここに捨てると思いました。
現在のコード
Item unit = Sitecore.Context.Item.Axes.SelectSingleItem("ancestor-or-self::*[@@templatename='Unit']");
Item[] allActivities = unit.Database.SelectItems("ancestor-or-self::*[@@templatename='Activity']");
foreach(Item thisitem in allActivities){
//Process here
}
兄弟( "Following"& "Preceeding")は、必要に応じlesson
てではなく、同じ下にある直接の兄弟のみを返すため、機能しませんunit
。