Tridion 从TBB访问页面模板元数据
有人知道是否有可能从TBB中读取页面模板元数据吗?我正在实施一项使用960网格系统构建的设计,为了保持CT的可重用性,我希望能够做到以下几点:Tridion 从TBB访问页面模板元数据,tridion,Tridion,有人知道是否有可能从TBB中读取页面模板元数据吗?我正在实施一项使用960网格系统构建的设计,为了保持CT的可重用性,我希望能够做到以下几点: <div class="@Page.Template.Metadata.content_grid"> </div> 不幸的是,这会引发空引用异常 我正在尝试的是可能的,还是我需要编写一个自定义TBB来将此信息添加到包中?在前往Alex的博客提问后,我发现他已经: 关于获取模板元数据…不幸的是,我没有 为模板本身创建了一个包装
<div class="@Page.Template.Metadata.content_grid">
</div>
不幸的是,这会引发空引用异常
我正在尝试的是可能的,还是我需要编写一个自定义TBB来将此信息添加到包中?在前往Alex的博客提问后,我发现他已经: 关于获取模板元数据…不幸的是,我没有 为模板本身创建了一个包装器,@Template 现在暴露出来的只是 Tridion.ContentManager.CommunicationManagement.Template one,其中 这意味着现在你必须把模板字段从老式的模式中去掉 方式: @{Tridion.ContentManager.ContentManagement.Fields.ItemFields templateFields=新建 ContentManager.ContentManagement.Fields.ItemFields(Template.Metadata, Template.MetadataSchema);} 不过,我现在已将此添加到我的待办事项列表中,所以您一定会看到 一个方便的包装,将允许您这样做 @1.3版中的Template.MetaData.YourField
我能够使用以下代码获取组件模板元数据的此项:
@foreach (var cp in ComponentPresentations) {
@if (cp.Template.Metadata != null && cp.Template.Metadata["position"] != null){
@Debug(string.Format("The Component Template position is {0}", cp.Template.Metadata["position"].InnerText))
@if (cp.Template.Metadata["position"].InnerText.ToLower().Equals("main")){
@cp.RenderComponentPresentation()
}
}
}
因此,我认为您应该能够使用类似以下内容:
@if (Page.Template.Metadata != null && Page.Template.Metadata["content_grid"] != null){
@Debug(string.Format("The content_grid value is {0}", Page.Template.Metadata["content_grid"].InnerText))
<div class="@Page.Template.Metadata["content_grid"].InnerText">
</div>
}
@if(Page.Template.Metadata!=null&&Page.Template.Metadata[“内容网格”!=null){
@调试(string.Format(“内容网格值为{0}”,Page.Template.Metadata[“内容网格”].InnerText))
}
请注意.InnerText和not.Value作为内容网格以xml形式返回。在我的代码中,“position”只是一个字符串。我想如果你使用分类法,这可能会有所不同
谢谢,
乔纳森
另外,我正在使用Razor Mediator的1.2版我还没有看到Alex出现在互联网的这一边,我可能会在他的博客上发布:感谢链接-看起来他正在计划将此作为v1.3的附加功能