Glen Langer (Contao Ninja)
Version: 1.0.1 vom 29.09.2026
code (ce_code → content-code)
headline (ce_headline → content-headline)
html (ce_html → content-html)
list (ce_list → content-list)
text (ce_text → content-text)
table (ce_table → content-table)
hyperlink (ce_hyperlink → content-hyperlink)
toplink (ce_toplink → content-toplink)
image (ce_image → content-image)
gallery (ce_gallery → content-gallery)
youtube (ce_youtube → content-youtube)
vimeo (ce_vimeo → content-vimeo)
download (ce_download → content-download)
downloads (ce_downloads → content-downloads)
markdown (ce_markdown→ content-markdown)
player (ce_player → content-player)
teaser (ce_teaser → content-teaser)
<div class="ce_text block">
float_left → media--left
float_right → media--right
float_above → media--above
float_below → media--below
caption → figcaption
<figure> ansprechenÜber die Seite contao-update-check.de prüfen,
passende composer.json generieren lassen
Hierfür gibt es zahlreiche Anleitungen
Alte angepasste html5 Templates verwendet?
Prüfen ob die noch funktionieren -> neue CE
Kein Backup - kein Mitleid!
Template: fe_page
Template: page/layout
template.html.twigInfos dazu auch auf docs.contao.org - layout/templates/twig/
Holy-Grail-Layout behalten, mit Twig nachbauen
{% extends "@Contao/page/layout.html.twig" %}
{%- set body_attributes = attrs()
.addClass('layout--3x3')
.mergeWith(body_attributes|default)
-%}
{% block end_of_head %}
{{ parent() }}
<style{{ attrs().setIfExists('nonce', csp_nonce('style-src')) }}>
#wrapper {
width: 1140px;
margin: 0 auto;
}
#left {
width: 200px;
right: 200px;
}
#right {
width: 200px;
}
#container {
padding-left: 200px;
padding-right: 200px;
}
</style>
<link rel="stylesheet" href="{{ asset('tapestry/css/layout.css', 'contao_vfs.files') }}">
<link rel="stylesheet" href="{{ asset('tapestry/css/responsive.css', 'contao_vfs.files') }}">
<link rel="stylesheet" href="{{ asset('tapestry/css/basic_tapestry.css', 'contao_vfs.files') }}">
<link rel="stylesheet" href="{{ asset('tapestry/css/default_tapestry.css', 'contao_vfs.files') }}">
<link rel="stylesheet" href="{{ asset('tapestry/css/footer_tapestry.css', 'contao_vfs.files') }}">
<link rel="stylesheet" href="{{ asset('tapestry/css/sticky_footer.css', 'contao_vfs.files') }}">
<link rel="stylesheet" href="{{ asset('tapestry/css/print_tapestry.css', 'contao_vfs.files') }}">
<link rel="stylesheet" href="{{ asset('tapestry/css/content_gallery_tapestry.css', 'contao_vfs.files') }}">
<link rel="stylesheet" href="{{ asset('tapestry/fonts/oswald-latin-regular.css', 'contao_vfs.files') }}">
<link rel="stylesheet" href="{{ asset('tapestry/fonts/abel-latin-regular.css', 'contao_vfs.files') }}">
<link rel="stylesheet" href="{{ asset('tapestry/fonts/satisfy-latin-regular.css', 'contao_vfs.files') }}">
<script src="{{ asset('js/jquery.js', 'contao-components/jquery') }}"></script>
<meta name="google-site-verification" content="IviramUWcqudfQEX2W47Zd_QCKb0lQp2NP0q-2OFsNk">
{% endblock %}
{% block body %}
{{ parent() }}
{{ include('@Contao/j_accordion.html.twig') }}
{{ include('@Contao/j_colorbox.html.twig') }}
{{ include('@Contao/js_slider.html.twig') }}
{# {{ include('@Contao/j_tablesort.html.twig') }} #}
{# {{ include('@Contao/js_autofocus.html.twig') }} #}
{% endblock %}
{% block body_content %}
<div id="wrapper">
{% slot header %}
<header id="header">
<div class="inside">
{{ slot() }}
</div>
</header>
{% endslot %}
<div id="container">
{% slot main %}
<main id="main">
<div class="inside">
{{ slot() }}
</div>
</main>
{% endslot %}
{% slot left %}
<aside id="left">
<div class="inside">
{{ slot() }}
</div>
</aside>
{% endslot %}
{% slot right %}
<aside id="right">
<div class="inside">
{{ slot() }}
</div>
</aside>
{% endslot %}
</div>
{% slot footer %}
<footer id="footer">
<div class="inside">
{{ slot() }}
</div>
</footer>
{% endslot %}
</div>
{% endblock %}
Twig-Layout Beispiele
GitHubGist
Dann los!
Contao 5.7