Carrotware.CMS.Core.SiteMapHelper.RenderSiteMap C# (CSharp) Method

RenderSiteMap() public method

public RenderSiteMap ( HttpContext context ) : void
context System.Web.HttpContext
return void
        public void RenderSiteMap(HttpContext context)
        {
            HttpRequest request = context.Request;
            HttpResponse response = context.Response;

            SiteData site = SiteData.CurrentSite;
            List<SiteNav> lstNav = new List<SiteNav>();

            using (ISiteNavHelper navHelper = SiteNavFactory.GetSiteNavHelper()) {
                //lstNav = navHelper.GetTwoLevelNavigation(SiteData.CurrentSiteID, true);
                lstNav = navHelper.GetLevelDepthNavigation(SiteData.CurrentSiteID, 4, true);
            }
            lstNav.RemoveAll(x => x.ShowInSiteMap == false);

            DateTime dtMax = lstNav.Min(x => x.EditDate);
            string DateFormat = "yyyy-MM-dd";

            response.Buffer = false;
            response.Clear();
            response.ContentType = "application/xml";

            XmlWriterSettings settings = new XmlWriterSettings();
            settings.Indent = true;
            settings.Encoding = Encoding.UTF8;
            settings.CheckCharacters = true;

            XmlWriter writer = XmlWriter.Create(response.Output, settings);

            //writer.WriteStartDocument();
            writer.WriteProcessingInstruction("xml", "version=\"1.0\" encoding=\"utf-8\"");
            writer.WriteRaw("\n");
            writer.WriteStartElement("urlset", "http://www.sitemaps.org/schemas/sitemap/0.9");
            writer.WriteAttributeString("xmlns", "xsi", null, "http://www.w3.org/2001/XMLSchema-instance");
            writer.WriteAttributeString("xsi", "schemaLocation", null, "http://www.sitemaps.org/schemas/sitemap/0.9    http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd");

            writer.WriteRaw("\n");
            writer.WriteStartElement("url");
            writer.WriteElementString("loc", site.MainURL);
            writer.WriteElementString("lastmod", dtMax.ToString(DateFormat));
            writer.WriteElementString("priority", "1.0");
            writer.WriteEndElement();
            writer.WriteRaw("\n");

            // always, hourly, daily, weekly, monthly, yearly, never

            foreach (SiteNav n in lstNav) {
                writer.WriteStartElement("url");
                writer.WriteElementString("loc", site.ConstructedCanonicalURL(n));
                writer.WriteElementString("lastmod", n.EditDate.ToString(DateFormat));
                writer.WriteElementString("changefreq", "weekly");
                writer.WriteElementString("priority", n.Parent_ContentID.HasValue ? "0.60" : "0.80");
                writer.WriteEndElement();
                writer.WriteRaw("\n");
            }

            writer.WriteEndDocument();

            writer.Flush();
            writer.Close();
        }

Usage Example

Example #1
0
        public void ProcessRequest(HttpContext context)
        {
            string sFileRequested = context.Request.Path;

            if (sFileRequested.ToLower().EndsWith("/rss.ashx")) {
                SiteData.CurrentSite.RenderRSSFeed(context);
            }

            if (sFileRequested.ToLower().EndsWith("/sitemap.ashx")) {
                SiteMapHelper smh = new SiteMapHelper();
                smh.RenderSiteMap(context);
            }

            if (sFileRequested.ToLower().EndsWith("/trackback.ashx")) {
                TrackbackHelper tbh = new TrackbackHelper();
                if (SiteData.CurretSiteExists) {
                    if (SiteData.CurrentSite.AcceptTrackbacks) {
                        tbh.ProcessTrackback(context, true);
                    } else {
                        tbh.GenerateTrackBackDisabled(context);
                    }
                }
            }

            context.Response.End();
        }
All Usage Examples Of Carrotware.CMS.Core.SiteMapHelper::RenderSiteMap