This article is the second of a series describing the faceted navigation system for EPiServer that we have internally developed in Cognifide, that’s already proven to be a robust solution for delivering tagged content a heavy traffic site, which will be released shortly as an open source project.
First of all we have to explain the nomenclature as it is going to be used quite a bit. A few terms we use pretty extensively are:
-
Facet – this is roughly an elaborate version of an EPiServer (or WordPress) category. One of the problem with EPiServer category is that it is just that and absolutely nothing more. There is no way for attaching metadata and conditional structuring of the category tree. There is no way to assign them roles. Facets provide you with much, MUCH more.
-
ability to use for tagging – not all facets you necessarily want to be used for tagging. Some tags are indeed used to identify a content, but some tags play more utilitatian way like “locale” that we are in – you would not necessarily tag a content as being only available within a certain locale (although you might want to do that anyway), therefore a role “locale” may be set as not taggable.
-
uniqueness – You may want to limit a role to only be able to has one of its member in any facet collection (IFacetrCollection). After all a user cannot be in 2 places at once so yet another logical extension for locale. Also request can only be performed within a context of one navigation space – therefore a navigation space representing tag need to be unique.
-
separating facets of different roles – once you are presented with a context of tags, you may want to categorize them. e.g. to color a header in a control you may want to know which “sport” the tag represents.
-
menu visibility – you may choose to display or not some tags in your navigation- this is the simplest way to specify that a meta-facets like say.. “flash video” should not generate a menu item as this is quite irrelevant to user.
-
context mandatory – this indicates that any given context has to have at least one facet of that role – if a context does not have any of the facets of this role – a default facet for this role will be used. For example – a user cannot be placed in a null locale, he has to be “somewhere on earth”, doesn’t he? ;)
-
availability for selection – this allows us to tell whether a facet can be used by editors and be visible on the site or whether it’s use is of more esoteric nature and the editor should not have it visible anywhere on the site – after all why would the editor want to see the navigation space representatives.
-
System Role – this indicates that a role is crucial to the operation of the faceted navigation and as such should never be deleted.
This entry (Permalink) was posted on Thursday, January 24th, 2008 at 4:36 pm and is filed under .Net Framework, ASP.NET, EPiCode, EPiServer, Faceted Navigation, Open Source, Software, Software Development, Web applications. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response , or trackback from your own site.