如何为SDL Tridion中的不同页面创建导航菜单?
我已经为所有这些类别创建了不同的页面:书籍、手机、comp等。现在我想在所有页面中放置这种类型的导航菜单(如图所示),打开页面应突出显示相应的菜单链接 我应该创建一个包含文本和链接的模式,并使其具有多值性吗?然后我创建一个组件,最后在所有页面中呈现它们 如果没有,请建议其他更好的方法如何为SDL Tridion中的不同页面创建导航菜单?,tridion,tridion-2011,Tridion,Tridion 2011,我已经为所有这些类别创建了不同的页面:书籍、手机、comp等。现在我想在所有页面中放置这种类型的导航菜单(如图所示),打开页面应突出显示相应的菜单链接 我应该创建一个包含文本和链接的模式,并使其具有多值性吗?然后我创建一个组件,最后在所有页面中呈现它们 如果没有,请建议其他更好的方法 在Tridion中生成任何导航的最常见方法是根据结构组和页面在C#模板中生成导航 例如,可以通过以下方式从模板(C#片段或实现ITemplate的类)中轻松生成面包屑痕迹: var pageDocument=pac
在Tridion中生成任何导航的最常见方法是根据结构组和页面在C#模板中生成导航 例如,可以通过以下方式从模板(C#片段或实现
ITemplate
的类)中轻松生成面包屑痕迹:
var pageDocument=package.GetByType(ContentType.Page).GetAsXmlDocument();
var current=新页面(pageDocument.DocumentElement,engine.GetSession());
var breadcrumb=页面标题;
while(current.OrganizationalItem!=null)
{
current=current.OrganizationalItem;
面包屑=当前。标题+“>”+面包屑;
}
package.PushItem(“面包屑”,
package.CreateStringItem(ContentType.Text,breadcrumb));
上面的片段实际上只展示了如何向上导航结构组的层次结构。您仍然需要将每个结构组作为链接,可能需要查看每个StructureGroup
的PublishUrl
属性
我知道你不是在问面包屑痕迹,你的看起来更像左导航。但所有导航元素的方法都是类似的:使用ITemplate中的TOM.NET遍历相关页面和结构组,并由此生成导航HTML
要获取当前StructureGroup中所有页面的列表(并标记当前页面),我希望如下所示:
var pageDocument=package.GetByType(ContentType.Page).GetAsXmlDocument();
var current=新页面(pageDocument.DocumentElement,engine.GetSession());
var sg=(StructureGroup)page.OrganizationalItem;
字符串结果=“”;
foreach(sg.GetItems()中的变量页)
{
结果+=(page.Id!=current.Id)?“- ”:“
- ”;
结果+=页面标题;
结果+=“
”;
}
结果+=“
”;
package.PushItem(“兄弟”,package.CreateHtmlItem(结果));
请看。这更接近于您最终需要的代码,但当然需要更多的代码(太多了,无法在这里复制)。Albert还分享了一些。如果您使用ASPX作为页面类型,下面介绍其他导航逻辑: