FieldRenderer - получает определенное имя поля из разных разделов шаблона. - PullRequest
2 голосов
/ 10 марта 2010

Есть ли способ получить определенное имя поля из шаблона с несколькими разделами в элемент управления 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" />

BR Larre

Ответы [ 2 ]

4 голосов
/ 10 марта 2010

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

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

0 голосов
/ 10 марта 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...