Quickstart
Neue Formatierung anlegen:
= Klasse im Stylesheet tinymce.scss definieren
= Klasse im Stylesheet _03_inline_and_text_content.scss definieren
= Bezeichnung im Template be_tinymce.html5 eintragen
In Contao 4 gibt es ein eigenes be_tinyMCE.html5-Template, in dem Anpassungen vorgenommen werden können.
Allerdings gibt es kein tinymce.css mehr unter /files: https://github.com/contao/core-bundle/blob/4.3.10/UPGRADE.md#tinymcecss-and-tiny_templates Man kann sich aber selbst eines anlegen:
Die tinymce.css muss in einen öffentlich erreichbaren Ordner gelegt werden - direkt unter /files geht also nicht mehr. Wenn vorhanden, ist sie in einem Theme-Ordner am besten aufgehoben (Sirius, Solo). Wenn nicht, einen Order /files/layout/css anlegen und dort parken. Das Template be_tinyMCE muss im Templates-Root liegen, nicht in einem (Theme-)Unterordner, da es sonst nicht geladen werden kann.
Ein öffentliches Verzeichnis /files/theme/css anlegen, tinymce.css dort anlegen, im Seitenlayout einbinden und im Template den Pfad dazu angeben:
importcss_groups: [{title: '<?= \Config::get('uploadPath'); ?>/theme/css/tinymce.css'}],
content_css: '<?= TL_PATH . '/' . \Config::get('uploadPath'); ?>/theme/css/tinymce.css',
ODER EINFACHER:
importcss_groups: [{title: 'Eigene Formatvorlagen'}],
content_css: ['/files/theme/css/tinymce.css'],
https://community.contao.org/de/showthread.php?66248-tinymce-css-in-Contao4
Und jetzt müssen wir nochmal unterscheiden!!!
body .mce-content-body p,
body .mce-content-body a,
body .mce-content-body li {
font-size: 1rem;
}
SOLO & SIRIUS:
/scr/scss/tinymce.scss => ist eine scss-Datei, in der alle Variablen verwendet werden können.
Diese wird mit gulp in /dist/css/tinymce.css umgewandelt, diese Datei ist ihrerseits im Seitenlayout eingebunden. Fazit: Formatierungen sind im Backend und im Frontend sichtbar.
Um die Formatierungen auch im Editor-Fenster sichtbar zu machen, muss der Pfad zur content.css im Template be_tinyMCE angegeben werden – das bezieht sich dann auf eben diese Datei: /dist/css/tinymce.css.
ACHTUNG: Unterscheidung zwischen style_formats und importcss_groups! Nochmal anschauen, was besser funktioniert …
? Eventuell zusätzliche Styles von importgroup.cssper css ausblenden?
? Oder dann doch die zusätzlichen Tiny-Styles in ein extra css auslagern? Müsste man dann zwar 2x warten, aber die Übersichtlichkeit wäre größer …
? projektweise entscheiden: importgroup.css oder Theme-Styles
? Lösung von Andreas Burg anschauen
Vorgangsweise in der lokalen SOLO-Installation mit mehreren Themes: Das Template be_tinyMCE.html5, in der der Pfad zur content_css eingetragen ist, ist für alle Themes gleich! D.h. in der Praxis, dass für jedes Theme (solo_sozialplattform, solo_artelavista, …) ein eigenes Template erstellt werden muss (mit dem Pfad zur jeweiligen content_css). Beim Arbeiten mit dem Theme muss das Template, das gerade in Arbeit ist, ohne Suffix abgespeichert werden. Zwischengeparkte Templates werden umbenannt in be_tinyMCE_sozialplattform, be_tinyMCE_artelavista etc.
Um ein Select-Feld für Formate in der Toolbar hinzuzufügen, muss in der Zeile toolbar ein | styleselect ergänzt werden:
toolbar: 'link unlink | image | bold italic | styleselect | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | undo redo | code'
Dieser Eintrag bewirkt erst einmal nur das:
Z.B. soll einem eine zusätzliche Klasse .text--attention vergeben werden. Hier das Code-Snippet im Kontext (Kommas etc. beachten!)
style_format_merge: bestehende Formatierungen werden nicht überschrieben, sondern ergänzt
style_formats: legt einen neuen Bereich “Theme Styles” an, das ein Listen-Element “Text Attention” beinhaltet. Dieses ist nur auf <p> anwendbar und vergibt diesen die Klasse .text--attention.
exact: true bewirkt, dass andere Klassen entfernt werden, damit es keine Konflikte gibt.
Das schlägt sich aber offenbar mit den oben eingefügten Klassen! Siehe auch hier: klick Und hier: klick
/assets/tinymce4/js/plugins kopieren, das Plugin wird aktiviert, indem man es unter “plugins” einfügt:'autosave charmap code codemirror fullscreen image importcss link lists paste searchreplacestripnbsp tabfocus table visualblocks',,
codemirror: {
indentOnInit: false, // Whether or not to indent code on init.
path: 'codemirror-5.2', // Path to CodeMirror distribution
config: { // CodeMirror config object
mode: 'htmlmixed',
lineNumbers: true,
foldGutter: true
}
}
});
}, 0);
/files liegen (Ordnerfreigabe nicht vergessen!)[<?php echo Backend::getTinyTemplates(); ?>], in der be_tinyMCE ergänzen (oberhalb von plugins)Ab Contao 4.5 ändert sich der Link zur tinymce.min.js. Falls be_tinyMCE-Templates aus Contao 4.4. übernommen werden, muss wahrscheinlich der Link angepasst werden:

Das PDF enthält auch eine Anleitung, um den TinyMCE für verschiedene Nutzergruppen anzupassen (wobei das in Contao 4 wieder anders läuft).
Weitere nützliche Links: