Rendering Content
The primary task of any template in Umbraco is to render the values of the current page or the result of a query against the content cache.
Display a value in your template view
Each property in your Document Type has an alias, this is used to specify where in the template view to display the value.
Specifying types of data
You can specify the type of data being returned to help you format the value for display, consider the publish date in our example:
To use the <IHtmlContent>
as the data return type, add the @using Microsoft.AspNetCore.Html;
directive.
Using ModelsBuilder
Working with the grid
To render the content from the Grid, see the Render Grid in Template article.
Using fall-back methods
The .Value()
method has a number of optional parameters that support scenarios where we want to "fall-back" to some other content when the property value does not exist on the current content item.
To use the fallback
type, add the @using Umbraco.Cms.Core.Models.PublishedContent;
directive.
To display a static, default value when a property value is not populated on the current content item:
A second supported method is to traverse up the tree ancestors to try to find a value. If the current content item isn't populated for a property, we can retrieve the value from the parent, grand-parent, or a higher ancestor in the tree. The first ancestor encountered that has a value will be the one returned.
If developing a multi-lingual site and fall-back languages* have been configured, the third method available is to retrieve a value for a different language, if the language we are requesting does not have content populated. In this way, we could render a field containing French content for a property if it's populated in that language, and if not, default to English.
We can also combine these options to create some more sophisticated scenarios. For example, we might want to fall-back via language first, and if that doesn't find any populated content, then try to find a value by traversing through the ancestors of the tree. We can do that using the following syntax, with the order of the fall-back options provided determining the order that content will be attempted to be retrieved:
In this example, we are looking for content firstly on the current node for the default language, and if not found we'll search through the ancestors. If failing to find any populated value from them, we'll use the provided default:
We can use similar overloads when working with ModelsBuilder, for example:
Fall-back languages can be configured via the Languages tree within the Settings section.
Each language can optionally be provided with a fall-back language, that will be used when content is not populated for the language requested and the appropriate overload parameters are provided.
It is possible to chain these language fall-backs, so requesting content for Portuguese, could fall-back to Spanish and then on to English.
Query content
In many cases, you want to do more than display values from the current page, like creating a list of pages in the navigation. You can access content relative to the current page using methods such as Children()
, Descendants()
& Ancestors()
. Explore the full list of methods.
You can do this by querying content relative to your current page in template views:
You can use the Query Builder in the template editor to build more advanced queries.
More information
Last updated