Fieldrenderer: obtenga el nombre de campo específico de diferentes secciones de plantillas

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

  •  19-09-2019
  •  | 
  •  

Pregunta

¿Hay alguna manera de obtener un nombre de campo específico de una plantilla con varias secciones a un control de FieldRenderer?

F.EX. Tengo una plantilla con las secciones "datos" y "data2", ambos tienen un campo de texto único llamado "texto". ¿Hay alguna manera de hacer que mi FieldRendere obtenga el campo "Texto" en la sección "Data2"

Sería bueno si una de las siguientes sugerencias funcionara:

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

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

Brarre

¿Fue útil?

Solución

Aunque se desarrolla así a propósito (no queremos que los desarrolladores de Sitecore pierdan el tiempo en los nombres de la sección), creo que tiene sentido incluir tal cosa. Permítanme enumerar esto como una solicitud de función.

Si desea que este correcto funcione, primero debe comprender cómo funciona el FieldRenderer. Comienza una tubería llamada 'Renderfield'. En el segundo paso de esto, está leyendo el Value de campo:

Reemplace ese con su propia clase personalizada con algo como esto:

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];
    }
}

Algo en la línea de:

args.Result.FirstPart = args.Item[args.Item.Template.GetSection("sectionName").GetField(args.FieldName).ID];

Pero ahora con verificaciones de errores :)

Otros consejos

Según la documentación oficial de Sitecore, los nombres de campo deben ser únicos en todas las secciones.

Esto también fue discutido aquí

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top