Наиболее распространенным способом для создания любой навигации в TRIDION, чтобы просто создать его в качестве шаблона C# на основе структуры групп и страниц.
Например крошка след может быть легко сгенерирована внутри шаблона (либо C# фрагмент или класс, реализующий ITemplate
) что-то вроде этого:
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));
выше фрагмент действительно только показывает, как перейдите по иерархии структурных групп вверх. Вам все равно придется составлять каждую структурную группу в качестве ссылки, возможно, глядя на PublishUrl
свойство каждого StructureGroup
.
Я знаю, что вы не спрашивали о тротуаре, ваш взгляд больше похож на левый. Но подход для всех элементов навигации схож: перейдите по соответствующим страницам и StructureGroups с помощью TOM.NET в ваш ITemplate и создайте свой HTML-код для навигации.
Чтобы получить список всех страниц в текущем StructureGroup (и отметьте текущий), я бы ожидать, что-то вроде этого:
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));
Пожалуйста, см this great example from Nick where he generates an entire sitemap. Это ближе к тому, что вам нужно в конце, но, конечно, намного больше кода (слишком много для воспроизведения здесь). Альберт также поделился некоторыми из his experience with this approach and mentions the alternatives.