Fieldrenderer- 다른 템플릿 섹션에서 특정 필드 이름 가져 오기
문제
여러 섹션이있는 템플릿에서 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];
그러나 이제 오류 확인이 있습니다 :)
다른 팁
공식 부지 문서에 따라 필드 이름은 섹션에서 독특해야합니다.
이것은 또한 논의되었습니다 여기
제휴하지 않습니다 StackOverflow