我在sitecore中有数据模板dt1,在“data”部分中有“header”字段。 我还有数据模板dt2,在“门户”部分有“标题”字段 最后,我有数据模板dt3,它使用dt1和dt2作为基本模板。
我怎样才能在xslt中找到portal / header的内容?
在我的代码中,当我写< sc:text field =“header”/>时,我得到数据/标题的内容(因为这个节点首先出现)。 我知道如何在.net中执行此操作,但我需要使用xslt。
/ callprat
答案 0 :(得分:9)
我在.Net上找到了解决这个问题的方法。客户端设置的模板之一具有“Buckets”,其具有不同的字段部分,但是桶之间的字段是相同的。我使用LINQ按节名称对字段进行分组,然后处理每个字段分组。
var sections = currentItem.Fields.GroupBy(field => field.Section);
foreach (var section in sections)
{
if (section.Key.StartsWith("Bucket"))
{
buckets.Add(new Bucket(section)); //I made a bucket item,
//and passed each IGrouping<Field> to it
}
}
答案 1 :(得分:8)
item.Fields.Where(field => field.Section.ToUpper() == "META DATA" &&
field.DisplayName.ToUpper() == "TITLE").First().Value;
答案 2 :(得分:5)
你不能。
坦率地说,我不知道有任何支持的方法可以从.NET中做到这一点。
这直接来自Data Definition Reference,第2.1.1节
2.1.1数据模板字段
数据模板字段定义用户 界面控制和其他属性 这会影响该领域的表现 在内容编辑器和页面编辑器中。 有关字段的更多信息,请参阅 第4章,模板字段。
注意定义字段名称时,请确保 它们之间甚至是独一无二的 现场部分。 XSLT和.NET 代码单独使用字段名称,没有 参考部分,提取 来自领域的内容。
答案 3 :(得分:5)
您可以按ID标识字段:
C#:
string value = item["{00000000-0000-0000-000000000000}"]
或
Field field = item.Fields["{00000000-0000-0000-000000000000}"]
我没试过这个,但我认为它也适用于XSLT:
<sc:text field="{00000000-0000-0000-000000000000}" />