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

Cal*_*rat 10 sitecore

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

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

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

/ callprat

Dan*_*ain 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
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 8

item.Fields.Where(field => field.Section.ToUpper() == "META DATA" && 
                           field.DisplayName.ToUpper() == "TITLE").First().Value;
Run Code Online (Sandbox Code Playgroud)


Mar*_*idy 5

你不能.

坦率地说,我也不知道从.NET那里得到任何支持的方式.

这直接来自数据定义参考,第2.1.1节

2.1.1数据模板字段

数据模板字段定义用户界面控件以及影响字段在"内容编辑器"和"页面编辑器"中的行为方式的其他属性.有关字段的详细信息,请参阅第4章,模板字段.

注意定义字段名称时,请确保它们在字段部分之间是唯一的.XSLT和.NET代码都使用字段名称而不引用节来从字段中提取内容.

  • 您可以使用API​​来完成.您只需要在部分信息下查找字段ID即可.然后,您可以使用它来获取字段值. (3认同)

Ale*_*kov 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}" />