Sitecore:如何在不同的部分中访问相同的字段名称

时间:2009-04-24 10:09:08

标签: sitecore

我在sitecore中有数据模板dt1,在“data”部分中有“header”字段。 我还有数据模板dt2,在“门户”部分有“标题”字段 最后,我有数据模板dt3,它使用dt1和dt2作为基本模板。

我怎样才能在xslt中找到portal / header的内容?

在我的代码中,当我写< sc:text field =“header”/>时,我得到数据/标题的内容(因为这个节点首先出现)。 我知道如何在.net中执行此操作,但我需要使用xslt。

/ callprat

4 个答案:

答案 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}" />