Navigation Provider
Mit dem Navigation Provider auf andere Artikel und Abschnitte verlinken.
Navigation Provider
Der nav Provider ermöglicht es, innerhalb von Knowledge-Base-Artikeln auf andere Artikel zu verlinken.
Die grundlegende Syntax lautet:
{nav:article-id}
Beispiel:
{nav:code-provider}
Der Link verweist auf den Artikel code-provider innerhalb der aktuellen Knowledge Base.
Eigener Linktext
Der Linktext kann nach einem | angegeben werden:
{nav:code-provider|Code Provider}
Dadurch wird nicht die Artikel-ID als Linktext verwendet, sondern:
Code Provider
Die allgemeine Syntax lautet:
{nav:article-id|Linktext}
Auf einen Abschnitt verlinken
Der Navigation Provider unterstützt auch Links auf einen bestimmten Anchor innerhalb eines Artikels.
Dazu wird der Anchor mit # an die Artikel-ID angehängt:
{nav:code-provider#provider-implementation}
Damit kann beispielsweise direkt auf den Abschnitt Provider implementieren verwiesen werden.
Anchor mit eigenem Linktext
Artikel und Linktext können kombiniert werden:
{nav:code-provider#provider-implementation|Provider implementieren}
Das ist besonders praktisch für Verweise innerhalb von Fließtext.
Beispiel:
Weitere Informationen findest du unter
{nav:code-provider#provider-implementation|Provider implementieren}.
Eigene Artikel verlinken
Ein einfacher Verweis auf einen Artikel:
Siehe auch {nav:code-provider|Code Provider}.
Oder ohne eigenen Linktext:
Siehe auch {nav:code-provider}.
Technische Umsetzung
Der Provider implementiert ICodeProvider:
public sealed class NavigationCodeProvider : ICodeProvider
{
private readonly IHttpContextAccessor _httpContextAccessor;
public NavigationCodeProvider(
IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
public string Name => "nav";
public bool CanHandle(string value)
{
return value.StartsWith(
"{nav:",
StringComparison.OrdinalIgnoreCase)
&& value.EndsWith("}", StringComparison.Ordinal);
}
// ...
}
Der Provider ermittelt die aktuelle Knowledge Base aus der aktuellen Route und erzeugt daraus die entsprechende URL.
Dadurch muss in einem Artikel keine vollständige URL angegeben werden.
Warum der Navigation Provider?
Ohne Provider müsste ein Artikel beispielsweise eine vollständige URL enthalten:
[Code Provider](/knowledge/language/phishing/code-provider)
Das hat einige Nachteile:
- die Knowledge-Base-ID ist fest im Inhalt enthalten
- URLs müssen manuell gepflegt werden
- Änderungen an der Routing-Struktur müssen in Artikeln angepasst werden
- Inhalte sind stärker an die konkrete Website gebunden
Mit dem Navigation Provider reicht:
{nav:code-provider|Code Provider}
Der Provider erzeugt die URL automatisch.
Links auf Abschnitte
Für einen Abschnitt kann beispielsweise verwendet werden:
{nav:code-provider#provider-implementation|Provider implementieren}
Der resultierende Link verweist auf:
/knowledge/{knowledgeBaseId}/code-provider#provider-implementation
Damit bleiben die eigentlichen Markdown-Inhalte unabhängig von der konkreten Knowledge-Base-URL.
Zusammenfassung
Die wichtigsten Varianten sind:
{nav:article-id}
{nav:article-id|Linktext}
{nav:article-id#anchor}
{nav:article-id#anchor|Linktext}
Beispiele:
{nav:code-provider}
{nav:code-provider|Code Provider}
{nav:code-provider#provider-implementation}
{nav:code-provider#provider-implementation|Provider implementieren}
Der Navigation Provider eignet sich damit sowohl für einfache Artikelverweise als auch für Querverweise auf konkrete Abschnitte innerhalb anderer Artikel.