Пример #1
0
        public override void Process(HttpRequestArgs args)
        {
            HttpContext context = HttpContext.Current;

            if (context == null)
            {
                return;
            }

            string requestUrl = context.Request.Url.ToString();

            if (string.IsNullOrEmpty(requestUrl) || !requestUrl.ToLower().EndsWith("robots.txt"))
            {
                return;
            }

            string robotsContent = string.Empty;

            if (Sitecore.Context.Site != null && Sitecore.Context.Database != null)
            {
                Item siteTenantItem = SiteExtensions.GetTenantItem(Sitecore.Context.Site);
                if (siteTenantItem != null)
                {
                    robotsContent = siteTenantItem.Fields[Constants.RobotsTextField].Value;
                }
            }

            context.Response.ContentType = "text/plain";
            context.Response.Write(robotsContent);
            context.Response.End();
        }
Пример #2
0
        public override void Process(HttpRequestArgs args)
        {
            HttpContext context = HttpContext.Current;

            if (context == null)
            {
                return;
            }

            string requestUrl = context.Request.Url.ToString();

            if (string.IsNullOrEmpty(requestUrl) || !requestUrl.ToLower().EndsWith("sitemap.xml"))
            {
                return;
            }

            string siteMapContent = string.Empty;

            if (Sitecore.Context.Site != null && Sitecore.Context.Database != null)
            {
                Item siteTenantItem = SiteExtensions.GetTenantItem(Sitecore.Context.Site);
                Item homeItem       = SiteExtensions.GetStartItem(Sitecore.Context.Site);
                if (siteTenantItem != null && homeItem != null)
                {
                    var logService         = ServiceLocator.ServiceProvider.GetService <ILogService>();
                    var glassMapperService = ServiceLocator.ServiceProvider.GetService <IGlassMapperService>();


                    //grab the base domain to use in each page item
                    var siteMapBaseDomain = siteTenantItem.Fields[Constants.SitemapBaseDomainField].Value;
                    var homeSiteMapItem   = glassMapperService.GetItem <ISiteMapItem>(homeItem.Paths.Path);

                    //Cached "per site"
                    string siteCacheKey = string.Format("{0}_{1}", Sitecore.Context.Site.Name, Constants.SitemapContentCacheKey);
                    if (CacheManagerService.GetObject(siteCacheKey) == null)
                    {
                        List <ISiteMapItem> allPageItemsFlattened = new List <ISiteMapItem>();

                        if (homeSiteMapItem.IncludeInSitemap)
                        {
                            allPageItemsFlattened.Add(homeSiteMapItem);
                        }

                        var flattenedSiteMapItems = GetRecursiveFlattenedSiteMapItems(homeSiteMapItem, allPageItemsFlattened);
                        if (flattenedSiteMapItems != null)
                        {
                            siteMapContent = GenerateSiteMapXML(flattenedSiteMapItems, siteMapBaseDomain, logService, glassMapperService);
                            CacheManagerService.SetObject(siteCacheKey, siteMapContent);
                        }
                    }
                    else
                    {
                        siteMapContent = CacheManagerService.GetObject(siteCacheKey).ToString();
                    }
                }
            }

            context.Response.ContentType = "text/xml";
            context.Response.Write(siteMapContent);
            context.Response.End();
        }