Requirements
Websites are structured into different sections. These sections frequently form a tree hierarchy. For example, a news site might have a Sports section with a Basketball subsection. The website of a bank might have different sections for private and institutional investors with the latter having subsections for public and private institutions.
Sections are also often called "navigation" or "context". Usually the sections of a site are displayed as a navigable hierarchy (a "navigation" or "site map"). The current location within the tree is often displayed as a "breadcrumb navigation".
Additionally, efficient content management requires reuse of content in different contexts. For example, reusage of an article for a different section, a mobile site or a micro site should not require inefficient and error-prone copying of that article.
Solution
A site section (or "navigation" or "context") is represented by a content item of type
CMChannel
or CMExternalChannel
which is a child of CMChannel
.
Sections span a tree hierarchy through the child relationships of
CMChannel#children
. If a CMChannel
is referenced by a
CMSite
item it is considered a root channel, that is an entry into a channel
hierarchy representing a website. The CMChannel
content items fulfill the following
purposes:
Hierarchy: They form a hierarchy of site sections which can be displayed as a navigation, sitemap, or bread crumb. Each site consists of exactly one section tree.
Context: They function as contexts for content. Content can be reused within different contexts in different layouts and visual appearance. For example, an article's layout may differ in a company's blog section from its layout in the knowledge base.
Page: Each
CMChannel
can be rendered as an overview page of the section it represents. Therefore, theCMChannel
contains information about the page structure (the "grid") for this overview page and the pages generated when content items are displayed in the content of theCMChannel
. For more information on how web pages are assembled in Blueprint also refer to the Section 6.3.4, “Page Assembly” section.Configuration:
CMChannel
content items contain settings which configure various aspects of the site section they represent. EachCMChannel
can override parent configuration by defining its own layout settings, content visibility, and other context settings. If for example, the "News" section of a site is configured for post-moderation of comments this configuration can be overwritten to premoderation in the subsection "News/Politics". For more information on settings see the section Section 6.3.3, “Settings”.
The context in which a content should be displayed is determined whenever a URL to the content is
created. In a simple website with no content reuse all contents only have a single context
and link building is very simple. For more complex scenarios
Blueprint includes a ContextStrategy
for the following purposes:
Generate a list of the available contexts for a content (the
ContextFinder
).Determine the most appropriate context for the specific link to be built (the
ContextSelector
).
The DefaultContextStrategy
in Blueprint uses a list of
ContextFinders
to retrieve all possible contexts for a content item and a single
ContextSelector
to determine the most appropriate one from the list.
The main ContextFinder
in CoreMedia Blueprint is the
FolderPropertiesEvaluatingContextFinder
. Its logic to retrieve contexts is as
follows:
- Determine the folder of the content item.
Traverse the folder hierarchy starting from the folder in step 1 to the root folder looking for a content item of type
CMFolderProperties
named_folderProperties
.Return the contents of the linklist property
contexts
of the foundCMFolderProperties
document.
The ContextSelector
in CoreMedia Blueprint is the
NearestContextSelector
. From the list of possible contexts for a content it selects
the context closest to the current context.