Display hidden pages in sitemap

Vote:
 

Does anyone have a simple solution to let the editor set that a page that is not VisibleInMenu to be shown in the sitemap when using a EPiServer:PageTree with EnableVisibleInMenu set to true. Not all "invisible" pages shnould be shown, only those that the editor sets (with a checkbox property on the page).

 

Is it possible when using this setup or do we have to iterate through the pages and use a standard asp:treeview?

#45843
Nov 19, 2010 12:21
Vote:
 

Hi Tobias,

I had to do something similar recently myself and i found the following article very helpful: http://www.epinova.no/blog/Kjetil-Simensen/dates/2010/4/extended-pagetree/

The method "CreateItemRecursive" is used to process each page and it is here you can filter the pages to display. The method uses a comma-separated string property to to filter out pagetypes but you can moify this "CreateItemRecursive" method to check the page[your_checkbox_propertyname] property instead. For your pages you could create a bool property called "IncludeInSiteMap" and filter as follows...

e.g.) Change the following:

foreach (string s in pagetypenames)
{
   if (s.Equals(page.PageTypeName, StringComparison.CurrentCultureIgnoreCase))
   {
         dontInclude = true;
         break;
   }
}
if(dontInclude) continue;

...to...


if (page["IncludeInSitemap"] == null) // or some similar check
{
     dontInclude = true;
     break;
}
                        
if(dontInclude) continue;

Hope that helps

#45854
Nov 19, 2010 15:14
Vote:
 

Add an event handler to the Filter event of the PageTree,

<EPiServer:PageTree runat="server" Filter="FilterVisibleInMenu" ...

In codebehind:

protected void FilterVisibleInMenu(object sender, EPiServer.Filters.FilterEventArgs e)
{
    for(int i = e.Pages.Count - 1; i--; i >= 0)
    {
        if (!e.Pages[i].VisibleInMenu && (e.Pages[i]["IncludeInSiteMap"] == null))
        {
            e.Pages.RemoveAt(i);
        }
    }
}

Or something like that (freehand code, could have logic and/or synax errors).

#45860
Nov 19, 2010 16:50
This topic was created over six months ago and has been resolved. If you have a similar question, please create a new topic and refer to this one.