Referenz

HeroML

Erweitern & Sicherheit

Eigene & buchbare Blöcke

Zusätzliche Blöcke kommen als Pakete (Plugins) hinzu und registrieren sich über die API:

export default function register(cms) {
  cms.addBlock({
    type: 'pricing',
    title: 'Preistabelle',
    category: 'design',
    scope: ['home'],
    css: '.pricing{ … }',
    render: (props, node, ctx) => `<section class="pricing">…</section>`,
  });
}

Der render-Callback erhält die Eigenschaften, den Block-Knoten und einen Kontext (u. a. ctx.e zum Maskieren, ctx.renderChildren). Ein Paket kann lizenzpflichtig sein und ohne gültige Lizenz einen Sperr-Platzhalter zeigen; der Schlüssel wird unter Design → Buchbare Block-Pakete eingetragen.

Sicherheit & SEO

  • HeroML ist Daten, kein Code: der Parser baut nur einen Objekt-Baum — es wird nichts ausgeführt.
  • Block-Renderer maskieren jeden Wert. Roh-HTML gibt es nur über html/richtext und wird per Allowlist bereinigt.
  • Der <head> (Titel, Meta, Open Graph, Twitter, JSON-LD, Favicon) wird zentral erzeugt; Blöcke können eigene JSON-LD-Strukturdaten beisteuern.
  • Ausgegeben wird server-gerendertes, semantisches HTML; sitemap.xml und robots.txt bleiben unverändert.

Spickzettel

# Kommentar                    Einrückung: 2 Leerzeichen
typ attr=wert attr2="zwei worte" flag   # Block-Zeile
schlüssel: wert                         # Feld-Zeile
  kind-block                            # tiefer = Kind

grid cols=3 · cell span=2               # Raster
with-sidebar side=right · sidebar sticky # Sidebar
featured                                # Highlight 50/25/25
posts layout=grid excerpt=20 mode=loadmore
recent-posts count=5 · category-list    # dynamische Widgets
ad slot=header format=leaderboard       # Werbeplatz
meta / animate=fade-up / {{ site.title }}

← Zurück zur Dokumentation