FieldRenderer — получить конкретное имя поля из разных разделов шаблона

Есть ли способ получить конкретное имя поля из шаблона с несколькими разделами в элемент управления FieldRenderer?

F.ex. У меня есть шаблон с разделами «Данные» и «Данные2», оба имеют однотекстовое поле под названием «Текст». Есть ли способ заставить мой FieldRenderer получить поле "Текст" в разделе "Данные2"

Было бы неплохо, если бы одно из следующих предложений сработало:

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

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

Б. Р. Ларре


person Zooking    schedule 10.03.2010    source источник


Ответы (2)


Хотя он специально разработан таким образом (мы не хотим, чтобы разработчики 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];

Но теперь с проверкой ошибок :)

person Alex de Groot    schedule 10.03.2010
comment
В нашем проекте мы уже перегружаем пользовательские элементы управления sitecore, поэтому добавление этого кода будет легкой прогулкой. Спасибо, Алекс. - person Zooking; 11.03.2010

Согласно официальной документации Sitecore, имена полей должны быть уникальными в разных разделах.

Это также обсуждалось здесь

person Mark Cassidy    schedule 10.03.2010