Die häufigste Art und Weise jede Navigation in Tridion zu erzeugen, ist es einfach in einer auf die Struktur-Gruppen und Seiten auf Basis C# Vorlage zu erzeugen.
Zum Beispiel ein Brotkrumen kann leicht aus einer Vorlage erstellt werden (entweder ein C# Fragment oder eine Klasse ITemplate
Implementierung) durch etwas wie folgt aus:
var pageDocument = package.GetByType(ContentType.Page).GetAsXmlDocument();
var current = new Page(pageDocument.DocumentElement, engine.GetSession());
var breadcrumb = page.Title;
while (current.OrganizationalItem != null)
{
current = current.OrganizationalItem;
breadcrumb = current.Title + " > " + breadcrumb;
}
package.PushItem("breadcrumb",
package.CreateStringItem(ContentType.Text, breadcrumb));
Das obige Fragment wirklich nur zeigt, wie man Navigieren Sie in der Hierarchie der Strukturgruppen nach oben. Sie müssen immer noch jede Strukturgruppe als einen Link machen, wahrscheinlich indem Sie PublishUrl
Eigenschaft von jedem StructureGroup
betrachten.
Ich weiß, dass Sie nicht nach einer Brotkrumenspur gefragt haben, Ihre sieht mehr wie ein Linksnav. Der Ansatz für alle Navigationselemente ist jedoch ähnlich: Durchqueren Sie die relevanten Seiten und Strukturgruppen mit dem TOM.NET in Ihrer ITemplate und generieren Sie daraus Ihren Navigations-HTML.
Um eine Liste aller Seiten im aktuellen StructureGroup bekommen (und das aktuelle markieren), würde ich so etwas wie dies erwarten:
var pageDocument = package.GetByType(ContentType.Page).GetAsXmlDocument();
var current = new Page(pageDocument.DocumentElement, engine.GetSession());
var sg = (StructureGroup) page.OrganizationalItem;
string result = "<ul>";
foreach (var page in sg.GetItems())
{
result += (page.Id != current.Id) ? "<li>" : "<li class='selected'>";
result += page.Title;
result += "</li>";
}
result += "</ul>";
package.PushItem("siblings", package.CreateHtmlItem(result));
Bitte beachten Sie auch this great example from Nick where he generates an entire sitemap sehen. Das ist näher an dem, was Sie am Ende brauchen werden, aber es ist natürlich viel mehr Code (zu viel, um hier zu reproduzieren). Albert teilte auch einige von his experience with this approach and mentions the alternatives.