Code Provider
Provider-basierte Code-Elemente in Knowledge Bases verwenden.
Code Provider
Knowledge Bases können spezielle Code-Elemente über eine einheitliche Provider-Syntax verwenden.
Die allgemeine Syntax lautet:
{provider:value}
Der erste Teil bestimmt den Provider, der zweite Teil enthält den Wert, der an diesen Provider übergeben wird.
Beispiel:
{material:shield}
Hier ist material der Provider und shield der Wert.
Verwendung
Provider-Code kann an verschiedenen Stellen einer Knowledge Base verwendet werden.
Knowledge-Base-Definition
Provider-Code kann beispielsweise fĂĽr das Icon einer Knowledge Base verwendet werden:
id: phishing
title:
de: Phishing Awareness
en: Phishing Awareness
icon: "{material:security}"
Navigation
Auch Navigationselemente können Provider-Code verwenden:
sections:
- id: basics
icon: "{material:menu_book}"
title:
de: Grundlagen
en: Basics
items:
- id: what-is-phishing
- id: detection
icon: "{material:search}"
title:
de: Phishing erkennen
en: Recognizing Phishing
items:
- id: suspicious-emails
Artikel
Auch das Frontmatter eines Artikels kann Provider-Code enthalten:
<!---
id: what-is-phishing
title: Was ist Phishing?
language: de
icon: "{material:help}"
description: Grundlagen und typische Merkmale von Phishing-Angriffen.
date: 2026-10-07
--->
Markdown-Inhalte
Provider-Code kann auch direkt innerhalb des Markdown-Inhalts verwendet werden:
## {material:shield} SchutzmaĂźnahmen
Mit einigen einfachen MaĂźnahmen kannst du das Risiko eines erfolgreichen Phishing-Angriffs reduzieren.
Vor der Markdown-Konvertierung wird der Provider-Code aufgelöst.
Provider-Syntax
Die allgemeine Syntax lautet:
{provider:value}
Der Provider wird anhand des Präfixes vor dem : erkannt.
Beispiele:
{material:shield}
{material:search}
{nav:code-provider}
Welcher Inhalt hinter dem : erlaubt ist, hängt vom jeweiligen Provider ab.
Ein Provider kann beispielsweise einfache Namen erwarten:
{material:shield}
oder komplexere Werte:
{nav:code-provider#provider-implementation|Provider implementieren}
Die genaue Syntax wird deshalb in der Dokumentation des jeweiligen Providers beschrieben.
Code Provider
Die Verarbeitung erfolgt zentral ĂĽber den CodeProvider.
{provider:value}
│
â–Ľ
CodeProvider
│
├── Provider A
├── Provider B
└── Provider C
│
â–Ľ
Ergebnis
Der CodeProvider sucht den registrierten Provider, der die jeweilige Syntax verarbeiten kann.
Dadurch mĂĽssen die einzelnen Stellen der Knowledge Base nicht wissen, wie ein bestimmtes Code-Element dargestellt oder verarbeitet wird.
Provider implementieren
Ein Provider implementiert ICodeProvider:
public interface ICodeProvider
{
string Name { get; }
bool CanHandle(string value);
string Process(string value);
}
CanHandle entscheidet, ob der Provider für einen bestimmten Wert zuständig ist.
Process verarbeitet den Wert und erzeugt das entsprechende Ergebnis.
Beispielsweise kann ein Provider anhand seines Präfixes entscheiden:
public bool CanHandle(string value)
{
return value.StartsWith(
"{example:",
StringComparison.OrdinalIgnoreCase)
&& value.EndsWith("}", StringComparison.Ordinal);
}
Der Provider wird anschlieĂźend ĂĽber Dependency Injection registriert:
builder.Services.AddSingleton<ICodeProvider, ExampleProvider>();
Der zentrale CodeProvider erhält alle registrierten Provider und wählt automatisch den passenden Provider aus.
Mehrere Provider
Das System ist bewusst nicht auf einen bestimmten Anwendungsfall beschränkt.
Es können beliebig viele Provider registriert werden.
Beispielsweise:
{material:shield}
{nav:code-provider}
{bootstrap:shield}
{fontawesome:shield}
Jeder Provider kann seine eigene Syntax und Verarbeitung implementieren.
Dadurch bleibt die eigentliche Knowledge-Base-Struktur unabhängig von den konkreten Implementierungen.
Code escapen
Wenn Provider-Code nicht verarbeitet werden soll, kann die öffnende geschweifte Klammer mit einem Backslash escaped werden:
\{material:shield}
Das Ergebnis ist:
{material:shield}
Der Backslash wird bei der Verarbeitung entfernt.
Das ist insbesondere hilfreich, wenn Provider-Syntax selbst dokumentiert oder als Beispiel dargestellt werden soll.
Beispiel
Die Syntax lautet:
\{material:shield}
Dadurch wird die Syntax als normaler Text dargestellt und nicht als Provider verarbeitet.
Codeblöcke und Inline-Code
Provider-Code wird innerhalb von Markdown-Codeblöcken nicht verarbeitet.
Beispiel:
```text
<span class="material-symbols-outlined">shield</span>
<a href="/knowledge/de/HowTo/code-provider">code-provider</a>
```
Die Inhalte bleiben unverändert:
{material:shield}
{nav:code-provider}
Das gilt auch fĂĽr Inline-Code:
Verwende `{material:shield}` fĂĽr ein Shield-Icon.
Hier wird {material:shield} ebenfalls als Code dargestellt und nicht verarbeitet.
Damit können Provider-Syntax und Beispiele problemlos innerhalb von Dokumentationen beschrieben werden.
Nicht unterstĂĽtzte Provider
Wenn kein registrierter Provider die angegebene Syntax unterstĂĽtzt, kann der Code nicht verarbeitet werden.
Beispiel:
{unknown:shield}
Ein entsprechender Provider muss zunächst implementiert und registriert werden.
VerfĂĽgbare Provider
Die konkreten Provider und deren Syntax werden in eigenen Artikeln beschrieben:
- Material Icons
- Navigation Provider
Weitere Provider können später ergänzt werden.
Zusammenfassung
Provider-Code verwendet grundsätzlich die Syntax:
{provider:value}
Welcher Provider für einen Wert zuständig ist, wird automatisch anhand der registrierten Provider ermittelt.
Provider können für unterschiedliche Bereiche einer Knowledge Base verwendet werden, beispielsweise für:
- Knowledge-Base-Metadaten
- Navigation
- Artikel-Metadaten
- Markdown-Inhalte
- zukĂĽnftige Erweiterungen
Soll Provider-Code nur als Text dargestellt werden, kann die Syntax escaped werden:
\{material:shield}
Innerhalb von Inline-Code und Codeblöcken wird Provider-Code nicht verarbeitet.
Neue Provider können hinzugefügt werden, ohne die bestehende Knowledge-Base-Struktur ändern zu müssen.