These components turn the items of a content provider into pages: lists, single articles and the metadata search
engines read. They live in the Osirion.Blazor.Cms.Web.Components namespace and read from the default provider
through IContentProviderManager, so register a content provider first (see
CMS Web components).
@using Osirion.Blazor.Cms.Web.Components
Components
| Component | Use it for |
|---|---|
| ContentList | Blog indexes and category, tag, author and search pages, with pagination and list SEO. |
| ContentView | One item as an article: header, sanitized body, categories, tags, previous and next links. |
| LocalizedContentView | The same, with links to the item's translations. |
| ContentPage | A whole article page loaded by URL: breadcrumbs, sidebar, share links, related items. |
| ContentRenderer | Only the body, with code highlighting, inside a layout you build. |
| SeoMetadataRenderer | Title, description, canonical URL, Open Graph, Twitter Card and JSON-LD in the page head. |
| Feeds and sitemap | /sitemap.xml, /feed.xml and /atom.xml endpoints. Available from 4.1. |
Choosing one
- Need a list? Use
ContentList; it also writes the list page's head metadata. - Need an article page with little code?
ArticlePage(used by the example site) loads an item by slug or URL and renders the hero, breadcrumbs, table of contents and head metadata.ContentPageis the older, simpler layout and writes no head metadata. - Building your own layout? Combine
ContentVieworContentRendererwith aSeoMetadataRendererin<HeadContent>.
Shared behavior
- Everything renders under static SSR. Links are ordinary links, and no component here needs script; only code
highlighting in
ContentRendererloads Prism when the content has code blocks. - Content HTML is sanitized before it is written: the providers sanitize Markdown output when they load it, and
ContentView,LocalizedContentViewandContentRenderersanitize again, which covers custom providers and items you create in code. Widen the allow-list withAddOsirionHtmlSanitizerwhen your content needs a custom element. - Category and tag links default to
/category/{slug}and/tag/{slug};LocalizedContentView, and thereforeContentPage, puts the locale in front (/en/category/{slug}). Each component takes formatter parameters when your routes differ.
Related Articles

