Code Provider

Provider-basierte Code-Elemente in Knowledge Bases verwenden.

07.10.2026

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}"

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.