現在のコンテキストを使用して 'ホームページ'アイテムを見つける独自のアイテムメソッドを作成します。これは通常、そのテンプレートに基づいてアイテムを探してツリーをトラバースすることによって行われます。
ホームアイテムを取得したら、設定アイテムを見つけることができます。
アイテムの拡張メソッド:
がTeplate商品
public static bool IsNull(this Item item)
{
return item == null;
}
public static bool HasBaseTemplate(this Item item, string baseTemplateNameOrId)
{
if (IsNull(item) || item.TemplateID.IsNull) return false;
var template = item.Template;
if (template == null) return false;
return IsMatchOnTemplateNameOrId(baseTemplateNameOrId, template) || HasBaseTemplateHelper(item.Template.BaseTemplates, baseTemplateNameOrId);
}
private static bool HasBaseTemplateHelper(TemplateItem[] baseTemplates, string baseTemplateNameOrId)
{
var templateFound = false;
foreach (var baseTemplateItem in baseTemplates.Where(baseTemplateItem => !IsNull(baseTemplateItem) && !baseTemplateItem.ID.IsNull))
{
templateFound = IsMatchOnTemplateNameOrId(baseTemplateNameOrId, baseTemplateItem) || HasBaseTemplateHelper(baseTemplateItem.BaseTemplates, baseTemplateNameOrId);
if (templateFound)
{
break;
}
}
return templateFound;
}
private static bool IsMatchOnTemplateNameOrId(string baseTemplateNameOrId, TemplateItem baseTemplateItem)
{
return baseTemplateItem.ID.Guid.ToString("B").Equals(baseTemplateNameOrId, StringComparison.OrdinalIgnoreCase) ||
baseTemplateItem.FullName.Equals(baseTemplateNameOrId, StringComparison.OrdinalIgnoreCase) ||
baseTemplateItem.Name.Equals(baseTemplateNameOrId, StringComparison.OrdinalIgnoreCase);
}
を探すテンプレートによって最初に親
public static Item GetFirstParentUsingTemplate(this Item currentItem, string baseTemplateNameOrId)
{
if (currentItem == null)
{
return null;
}
if (IsMatchOnTemplateNameOrId(baseTemplateNameOrId, currentItem.Template))
{
return currentItem;
}
var parent = currentItem.Parent;
while (parent != null && IsMatchOnTemplateNameOrId(baseTemplateNameOrId, parent.Template) == false)
{
parent = parent.Parent;
}
return parent;
}
はテンプレート
012によって子供を探します
public static ItemList GetChildrenUsingTemplate(this Item currentItem, string baseTemplateNameOrId)
{
var children = currentItem.Axes.GetDescendants(); // flat list of all children
var childList = new ItemList();
if (String.IsNullOrWhiteSpace(baseTemplateNameOrId))
{
return childList;
}
foreach (Item child in children)
{
if (child.HasBaseTemplate(baseTemplateNameOrId))
{
childList.Add(child);
}
}
return childList;
}
なぜ、別の「サイト」が必要ですか? – Gatogordo
したがって、セカンダリサイトにリンクされているセカンダリサイト内の設定は、親サイト全体とは異なるものにアクセスできます。 –
その設定を他の場所に置くことは可能ですか?サブサイトを使うと困ってしまうかもしれません。configsを設定する別の方法(または他の既存の方法を使う)を作るのはずっと簡単です。 – Gatogordo