Erweiterungen werden in JS erstellt und liegen im Ordner hosts/<host>/extensions bzw. themes/<theme>/extensions und müssen in Dateien nach dem Namensschema <namen>.js abgelegt werden. Es kann beliebig viele Dateien mit Extension geben.
Template erweitern
Supplier für Inhalte
import { $template } from 'system/template.mjs';
$template.registerTemplateSupplier(
"myName",
() => "Thorsten"
)
<div th:with="name = ${myName.get()}">
<p th:th:text="${name}"></p>
<!-- Thorsten -->
</div>
Funktion für Templates
Funktionen können im Gegensatz zu Supplier auch Parameter entgegen nahmen
import { $template } from 'system/template.mjs';
$template.registerTemplateFunction(
"getHello",
(name) => "Hello " + name + "!"
)
<div th:with="hello = ${getHello.apply('Thorsten')}">
<p th:text="${hello}"></p>
<!-- Hello Thorsten -->
</div>
Erweiterungen für Markdown
Das Markdown-Rendering kann nicht direkt beeinflusst werden. Durch ShortCodes kann die Verwaltung von Inhalten allerdings deutlich verbessert und unterstützt werden.
Eigenen ShortCodes erstellen
import { $shortcodes } from 'system/shortcodes.mjs';
$shortcodes.register(
"hello",
(params) => `Hello ${params.get("name")}, I'm a TAG!`
)
Verwendung in Markdown:
[[hello name='Thorsten'/]]
Ausgabe im HTML:
Hello Thorsten, I'm a TAG!