FieldRenderer - получение определенного имени поля из разных разделов шаблона

StackOverflow https://stackoverflow.com/questions/2417362

  •  19-09-2019
  •  | 
  •  

Вопрос

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

F.пример.У меня есть шаблон с разделами "Data" и "Data2", оба имеют одно текстовое поле под названием "Текст".Есть ли способ заставить мой FieldRenderer получить поле "Текст" в разделе "Data2"

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

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

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

Бр Ларре

Это было полезно?

Решение

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

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top