Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save darrenferguson/15e1d4ab3ddaa973c7997122266e418e to your computer and use it in GitHub Desktop.
Save darrenferguson/15e1d4ab3ddaa973c7997122266e418e to your computer and use it in GitHub Desktop.
using System.Linq;
using System.Web.Configuration;
using Umbraco.Web.Routing;
namespace Moriyama.Core.Routing.ContentFinders
{
/// <summary>
/// A content finder which looks for content items which are children of an Umbraco Hidden Folder.
/// </summary>
public class UmbracoHiddenFolderChildrenContentFinder : ContentFinderByNiceUrl
{
public override bool TryFindContent(PublishedContentRequest contentRequest)
{
var umbracoHiddenFolderAlias = WebConfigurationManager.AppSettings["UmbracoHiddenFolderAlias"] ?? "umbracoHiddenFolder";
// We are using XPath to find any page which is a descendant of an Umbraco Hidden Folder
// It is using the alias of the Umbraco Hidden Folder and searching by the urlName for the content item
var urlName = contentRequest.Uri.Segments.Last();
var xPathQuery = "/descendant::" + umbracoHiddenFolderAlias + "/*[@urlName='" + urlName + "']";
var node = contentRequest.RoutingContext.UmbracoContext.ContentCache.GetSingleByXPath(xPathQuery);
if (node != null && node.ContentType.Alias != umbracoHiddenFolderAlias)
{
contentRequest.PublishedContent = node;
return true;
}
return false;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment