How should I retrieve all frontend navigation pages?
PageManager pageManager = PageManager.GetManager();
var rootNodeId = SiteInitializer.CurrentFrontendRootNodeId;
IQueryable<PageData> pages = pageManager.GetPageDataList()
.Where(pData => pData.NavigationNode.Parent.Id == rootNodeId
&& !pData.NavigationNode.IsDeleted
&& pData.NavigationNode.ShowInNavigation ==
true
&& pData.Status == ContentLifecycleStatus.Live).Order
By(pData => pData.NavigationNode.Ordinal);
This will work fine as long as the top level pages are not redirect pages which in my case is the issue. I have tried playing around with pData.NavigationNode.NodeType == NodeType.InnerRedirect...and etc., but no luck so far to get those pages to show up in the menu.
How should I go about doing this?
The menu structure is this:
About Us -> top level redirect page set to Overview
- Overview -> child page
-another child page
After realizing I was being stubborn I decided to go through with using SiteMapBase. I am still getting all finalized to the way I need it, but I am well on my way this the following approach.
var provider = SiteMapBase.GetCurrentProvider();
var rootNode = provider.FindSiteMapNodeFromKey(rootNodeId.ToString());
var pages = provider.GetChildNodes(rootNode);
foreach
(PageSiteNode node
in
pages)
//Still working on items in here
var subPages = provider.GetChildNodes(node);
foreach
(PageSiteNode subNode
in
subPages)
//Still working on items in here too