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
と見て、すべての構造グループをリンクとして作成する必要があります。
あなたはブレッドクラムのトレールについて聞いていなかったことは知っていますが、あなたはレフトナビのように見えます。しかし、すべてのナビゲーション要素のアプローチは似ています.Template内のTOM.NETを使用して関連するPagesおよびStructureGroupをトラバースし、そこからナビゲーションHTMLを生成します。現在StructureGroup内のすべてのページのリストを取得(および現在の1をマーク)、私はこのような何かを期待する
:
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の一部を共有しました。ページの種類としてASPXを使用している場合