FieldRenderer - 从不同模板部分获取特定字段名称

发布于 2024-08-24 13:50:16 字数 425 浏览 5 评论 0原文

有没有办法从具有多个部分的模板中获取特定字段名称到 FieldRenderer 控件?

F. 前。我有一个包含“Data”和“Data2”部分的模板,两者都有一个名为“Text”的单文本字段。有没有办法让我的 FieldRenderer 获取“Data2”部分中的字段“Text”

如果以下建议之一有效,那就太好了:

<sc:FieldRenderer ID="test" runat="server" FieldName="Text" Section="Data2" />

<sc:FieldRenderer ID="test" runat="server" FieldName="Data2/Text" />

BR Larre

Is there a way to get a specific field name from a template with several sections to a FieldRenderer control?

F.ex. I have a template with the sections "Data" and "Data2", both have a single-text-field called "Text". Is there a way to make my FieldRenderer get the field "Text" in section "Data2"

It would be nice if one of the below suggestions worked:

<sc:FieldRenderer ID="test" runat="server" FieldName="Text" Section="Data2" />

<sc:FieldRenderer ID="test" runat="server" FieldName="Data2/Text" />

BR Larre

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

孤千羽 2024-08-31 13:50:16

虽然它是故意这样开发的(我们不希望 Sitecore 开发人员在部分名称上浪费时间),但我认为包含这样的东西确实有意义。
让我将其列为功能请求。

如果您想了解其工作原理,您应该首先了解 fieldRenderer 是如何工作的。它启动了一个名为“renderField”的管道。
在第二步中,它读取字段值:

将其替换为您自己的自定义类,如下所示:

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];

但现在带有错误检查:)

Though it's developed like this on purpose(we don't want Sitecore developers to waste time on section-names), I think it does make sense to include such a thing.
Let me list this as a feature request.

If you want to have this working right know, you should first understand how the fieldRenderer is working. It kicks off a pipeline called 'renderField'.
In the second step of this, it's reading the fieldvalue:

Replace that one with your own custom class with something like this:

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];
    }
}

Something in the line of:

args.Result.FirstPart = args.Item[args.Item.Template.GetSection("sectionName").GetField(args.FieldName).ID];

But now with error checks :)

究竟谁懂我的在乎 2024-08-31 13:50:16

根据 Sitecore 官方文档,字段名称在各部分中必须是唯一的。

此处

Per official Sitecore Documentation, field names must me unique across sections.

This was also discussed here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文