有没有办法从具有多个部分的模板中获取特定字段名称到FieldRenderer控件?
F.ex。我有一个模板,其中包含“数据”和“数据2”部分,两者都有一个名为“文本”的单文本字段。有没有办法让我的FieldRenderer在“Data2”
部分中获取字段“Text”如果以下建议之一奏效,那就太好了:
<sc:FieldRenderer ID="test" runat="server" FieldName="Text" Section="Data2" />
<sc:FieldRenderer ID="test" runat="server" FieldName="Data2/Text" />
BR Larre
答案 0 :(得分:4)
虽然它是故意这样开发的(我们不希望Sitecore开发人员在部门名称上浪费时间),但我认为包含这样的东西确实有意义。 让我将其列为功能请求。
如果您想知道这项工作正确,您应该首先了解fieldRenderer的工作方式。它启动了一个名为'renderField'的管道。 在第二步中,它正在读取fieldvalue:
用你自己的自定义类替换那个类似的东西:
public void Process(RenderFieldArgs args)
{
Assert.ArgumentNotNull(args, "args");
if(args.RawParameters.Contains("Section"))
{
//Parse args.RawParameters
//Extract Section data
//Take args.Item.Template
//Resolve section
//Resolve fieldvalue
//Set this field value as args.Results.FirstPart
}
if (!string.IsNullOrEmpty(args.FieldValue))
{
args.Result.FirstPart = args.FieldValue;
}
else
{
args.Result.FirstPart = args.Item[args.FieldName];
}
}
以下内容:
args.Result.FirstPart = args.Item[args.Item.Template.GetSection("sectionName").GetField(args.FieldName).ID];
但现在有错误检查:)
答案 1 :(得分:0)
根据官方Sitecore文档,字段名称必须在各个部分中唯一。
还讨论了here