Skip to content

Template configuration

You configure how templates are used under the content_view key.

The following example configuration defines template usage for several cases:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
ibexa:
    system:
        site_group:
            pagelayout: '@ibexadesign/pagelayout.html.twig'
            content_view:
                full:
                    article:
                        template: '@ibexadesign/full/article.html.twig'
                        match:
                            Identifier\ContentType: article
                    blog_post:
                        template: '@ibexadesign/full/blog_post.html.twig'
                        controller: App\Controller\BlogController::showBlogPostAction
                        match:
                            Identifier\ContentType: [blog_post]
                    terms:
                        template: '@ibexadesign/full/terms_and_conditions.html.twig'
                        match:
                            Id\Content: 144
                line:
                    article:
                        template: '@ibexadesign/line/article.html.twig'
                        match:
                            Identifier\ContentType: [article]

Scope

The content view configuration must be placed under ibexa.system.<scope>.

Scope defines the SiteAccesses for which the configuration is valid. It may be a SiteAccess, a SiteAccess group, or one of the generic configuration scopes.

Page layout

pagelayout defines the general layout of the whole site. Other templates can extend the page layout.

1
            pagelayout: '@ibexadesign/pagelayout.html.twig'

View types

content_view defines rules for rendering content. Rules are grouped per view type.

1
2
3
4
5
6
ibexa:
    system:
        site_group:
            pagelayout: '@ibexadesign/pagelayout.html.twig'
            content_view:
                full:

The default, built-in views are:

  • full - used when the Content item is displayed by itself, as a full page
  • line - used when content is displayed as an item in a list, for example a list of the contents of a folder
  • text_linked - used for a text section that is a link
  • embed - used when one Content item is embedded in another, as a block
  • embed-inline - used when a Content item is embedded inline in another
  • asset_image - used when an image asset is embedded in another Content item

The built-in views have built-in default templates. You can define any other custom views. For each custom view, you must define a custom template.

Direct path to previewing view types

You can preview content in a specific view type by using a direct path to the built-in view controller:

<yourdomain>/view/content/<contentId>/<viewType>/true/<locationId>

For example:

<yourdomain>/view/content/55/embed/true/57

View rules and matching

Each rule must have a name unique per view type. For each rule you must define the matching conditions. The match key can contain one or more view matchers, including custom ones.

1
2
3
4
5
                    blog_post:
                        template: '@ibexadesign/full/blog_post.html.twig'
                        controller: App\Controller\BlogController::showBlogPostAction
                        match:
                            Identifier\ContentType: [blog_post]

template indicates which template to use.

controller indicates which controller and which method to use when rendering the content. You can use it together with the template key, or without it.

params can provide additional parameters to the content view. Use them, for example, with Query types or to provide custom Twig variables to the template.

Combining matchers

When you use more than one matcher in one rule, both conditions must match for the rule to apply.

1
2
3
match:
    Identifier\ContentType: [article, blog_post]
    Identifier\Section: news

In the example above, content that is either an article or a blog post is matched, but it must be in the "News" Section.