2014-01-18 5 views
5

Есть ли простой способ определить, является ли сайт одним из собственных сайтов Sitecore?Sitecore - Это «внутренний» сайт?

В общем, что я ищу это сокращение:

var sitenames = new string[] {"admin","shell","login","service"}; // etc. 

if(!sitenames.Contains(Sitecore.Context.Site.Name)) 
    //do stuff 

Я не вижу ничего в SiteContextSiteInfo или классов, которые выглядят полезными для этого.

Я очень счастлив написать эту функциональность самостоятельно. Я просто хочу убедиться, что он уже нигде не скрыт.

ответ

10

Глядя на определения сайта в файле web.config, все внутренние вещи Sitecore имеют свойство домена, установленное в Sitecore.

Так что в основном что-то вроде этого:

if (Sitecore.Context.Site.Domain != Sitecore.Security.Domains.Domain.GetDomain("sitecore")) 
{ 
    // [Do stuff here] 
} 
+0

но сайта: доменное имя modules_website является 'Экстранет'. как это можно было бы игнорировать? исправьте меня, если я ошибаюсь. –

4

Off задней части @ ответ Trayek, я написал этот метод расширения, который работает хорошо.

namespace Extensions 
{ 
    public static class SiteContextExtensions 
    { 
     public static bool IsInternal(this SiteContext siteContext) 
     { 
      return siteContext.Domain.Name == "sitecore"; 
     } 
    } 
} 

Использование:

if(!Sitecore.Context.Site.IsInternal()) 
    // Do stuff 
Смежные вопросы