Files
CodePress/guide/nl/theme-developer/twig-templates.md
T
E.Noorlander cd498c8c3a v2.5.1: Admin theme refactor, Navigation plugin, user roles, guide restructure
- Reorganize admin into admin/theme/default/ (views + assets)
- Rename GuideNav to Navigation plugin (essential, protected)
- Plugin assets support (SCSS/CSS) loaded after theme CSS
- User roles: Admin, Content Manager, BI Manager, Site Admin
- Role-based access control (RBAC) for admin routes and sidebar
- Guide restructure: sub-topics in separate folders with sidebar nav
- Dynamic breadcrumb for homepage and subdirectories
- Fix theme path traversal (../../ -> ../) in admin.php
- Fix CodeMirror mode load order (xml -> css -> js -> htmlmixed -> php)
- Fix editor-toolbar.js null checks for plugin edit pages
- Layout select from theme.json with live frontmatter update
- Footer sticky at bottom of viewport (min-height: 100vh)
- Breadcrumb color fix (var(--nav-font) -> var(--header-bg))
- Remove language switcher from guide pages
- Update README.md and README.en.md
- Bump version to 2.5.1
2026-08-10 15:36:29 +02:00

6.1 KiB

Twig templates

Basis syntax

{# Commentaar #}
{{ variabele }}
{{ variabele|default('standaard') }}
{% if voorwaarde %}...{% endif %}
{% for item in items %}...{% endfor %}
{% extends 'base.twig' %}
{% block content %}{% endblock %}
{% include 'partials/header.twig' %}

base.twig voorbeeld

<!DOCTYPE html>
<html lang="{{ current_lang }}">
<head>
    <meta charset="UTF-8">
    <title>{{ page_title }} - {{ site_title }}</title>
    <meta name="description" content="{{ seo_description }}">
    <link rel="stylesheet" href="{{ theme_css_url }}">
</head>
<body>
    {% include 'partials/header.twig' %}
    
    {% block content %}{% endblock %}
    
    {% include 'partials/footer.twig' %}
</body>
</html>

Variabelen beschikbaar in templates

Pagina data

Variabele Type Beschrijving
page_title string Titel van huidige pagina (HTML-escaped)
content string Ge-renderde pagina content (HTML)
page_metadata array Frontmatter metadata van de pagina
layout string Layout naam (bijv. full_content)
sidebar_content string Sidebar content van plugins (HTML)
breadcrumb string Breadcrumb HTML (gegeneerd door CMS)

Site data

Variabele Type Beschrijving
site_title string Site titel uit config.json
default_page string Standaard pagina pad
homepage string Homepage pad
homepage_title string Homepage titel
is_homepage bool Of huidige pagina de homepage is
is_guide_page bool Of huidige pagina een handleiding is
has_content bool Of content map niet leeg is
cms_version string CMS versie nummer

Menu & Navigatie

Variabele Type Beschrijving
menu string Ge-renderd menu HTML
current_page string Huidige pagina pad
breadcrumb string Breadcrumb HTML

Taal

Variabele Type Beschrijving
current_lang string Huidige taal code (bijv. nl)
current_lang_upper string Huidige taal in hoofdletters
available_langs array Beschikbare talen met code, name, url, is_current

SEO

Variabele Type Beschrijving
seo_description string SEO beschrijving
seo_keywords string SEO keywords
block_ai_bots bool AI bots blokkeren
block_search_engines bool Zoekmachines blokkeren

Auteur

Variabele Type Beschrijving
author_name string Auteur naam
author_website string Auteur website URL
author_git string Auteur Git URL

Theme

Variabele Type Beschrijving
theme_title string Thema titel
theme_css_url string Gecompileerde CSS URL
theme_js_url string JavaScript URL
theme_config array Thema configuratie uit theme.json
theme_base_url string Basis URL van thema (bijv. /themes/default)
theme_css_files array Lijst van CSS bestanden
theme_js_files array Lijst van JS bestanden
theme_favicon string Favicon URL
plugin_css_urls array CSS URLs van plugins (geladen ná theme CSS)

Theme kleuren

Variabele Type Beschrijving
header_color string Header achtergrondkleur
header_font_color string Header tekstkleur
header_height string Header hoogte in px
navigation_color string Navigatie achtergrondkleur
navigation_font_color string Navigatie tekstkleur
nav_height string Navigatie hoogte in px
sidebar_background string Sidebar achtergrondkleur
sidebar_border string Sidebar randkleur

Bestandsinfo

Variabele Type Beschrijving
created string Aanmaakdatum van bestand
modified string Wijzigingsdatum van bestand
show_created bool Of aanmaakdatum getoond moet worden
file_info_block bool Of bestandsinfo blok getoond moet worden

Vertalingen

Variabele Type Beschrijving
t_home string "Home" vertaling
t_search string "Zoeken" vertaling
t_search_placeholder string Zoekbalk placeholder vertaling
t_search_button string Zoekknop vertaling
t_welcome string "Welkom" vertaling
t_created string "Aangemaakt" vertaling
t_modified string "Gewijzigd" vertaling
t_author string "Auteur" vertaling
t_manual string "Handleiding" vertaling
t_guide string "Handleiding" vertaling
t_no_content string "Geen content" vertaling
t_no_results string "Geen resultaten" vertaling
t_results_found string "Resultaten gevonden" vertaling
t_powered_by string "Aangedreven door" vertaling
t_page_not_found string "Pagina niet gevonden" vertaling
t_page_not_found_text string "Pagina niet gevonden" tekst vertaling
t_mappen string "Mappen" vertaling
t_paginas string "Pagina's" vertaling

Layouts en blocks

Een layout template extends base.twig en vult het content block:

{% extends 'base.twig' %}

{% block content %}
<div class="container">
    {{ content|raw }}
</div>
{% endblock %}

Conditionele sidebar

{% if sidebar_content %}
<div class="row">
    <aside class="col-md-4">
        {{ sidebar_content|raw }}
    </aside>
    <main class="col-md-8">
        {{ content|raw }}
    </main>
</div>
{% else %}
<div class="container">
    {{ content|raw }}
</div>
{% endif %}

Taal switcher

{% for lang in available_langs %}
    <a href="{{ lang.url }}" class="{{ lang.is_current ? 'active' : '' }}">
        {{ lang.name }}
    </a>
{% endfor %}

Plugin CSS laden

Plugin CSS wordt automatisch geladen ná theme CSS, zodat themes plugin styling kunnen overschrijven:

{% for cssUrl in plugin_css_urls|default([]) %}
    <link href="{{ cssUrl }}" rel="stylesheet">
{% endfor %}