Fieldrenderer- 다른 템플릿 섹션에서 특정 필드 이름 가져 오기

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

  •  19-09-2019
  •  | 
  •  

문제

여러 섹션이있는 템플릿에서 FieldRenderer 컨트롤로 특정 필드 이름을 얻는 방법이 있습니까?

F.EX. "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가 어떻게 작동하는지 이해해야합니다. '렌더 필드'라는 파이프 라인을 시작합니다. 이 단계에서는 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];

그러나 이제 오류 확인이 있습니다 :)

다른 팁

공식 부지 문서에 따라 필드 이름은 섹션에서 독특해야합니다.

이것은 또한 논의되었습니다 여기

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top