10

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

如何在 xslt 中找到门户/标题的内容?

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

/callprat

4

4 回答 4

9

我在 .Net 的一个项目中找到了解决这个问题的方法。客户设置的模板之一有“桶”,其中有不同的字段部分,但桶之间的字段是相同的。我使用 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
    }
}
于 2010-06-18T13:23:55.443 回答
8
item.Fields.Where(field => field.Section.ToUpper() == "META DATA" && 
                           field.DisplayName.ToUpper() == "TITLE").First().Value;
于 2011-09-21T19:36:18.817 回答
5

你不能。

坦率地说,我也不知道有任何支持的方式从 .NET 中做到这一点。

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

2.1.1 数据模板字段

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

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

于 2009-04-25T00:48:43.853 回答
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}" />

于 2009-04-28T12:22:19.230 回答