¿Cómo pasar los parámetros a la plantilla de visualización de control de una parte web de búsqueda de contenido?

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/67619

Pregunta

Uso de SharePoint 2013 Tengo una parte web de búsqueda de contenido que estoy usando para mostrar 5 artículos de noticias usando las siguientes plantillas de pantalla:

  • Control: Lista
  • Artículo: Imagen a la izquierda, 3 líneas a la derecha

    y esto está trabajando bien.

    Lo que me gustaría incluir es un enlace después de los 5 artículos de noticias que llevarán al usuario a una página de "Archivo de noticias" donde muestra todos los artículos de noticias.

    Estoy pensando en crear una plantilla de pantalla de control personalizada basada en la plantilla de pantalla OOTB Control_List.js.Supongo que podría un código duro el enlace al archivo de noticias en la plantilla de la pantalla, pero me gustaría hacerlo reutilizable.¿Hay alguna forma en que podría pasar dinámicamente los datos a la plantilla de pantalla de control?

    ¿Alguna otra sugerencia sobre cómo abordar esto?

¿Fue útil?

Solución

Debería heredar a ContentBySearchWebPart, y sobrecargar el evento OnLoad:

protected override void OnLoad(EventArgs e)
{
    if (this.AppManager != null)
    {
        if (this.AppManager.QueryGroups.ContainsKey(this.QueryGroupName) &&
            this.AppManager.QueryGroups[this.QueryGroupName].DataProvider != null)
        {
            this.AppManager.QueryGroups[this.QueryGroupName].DataProvider.BeforeSerializeToClient +=
                new BeforeSerializeToClientEventHandler(EnhanceQuery);

         }
     }

     base.OnLoad(e);
}


protected virtual void EnhanceQuery(object sender, BeforeSerializeToClientEventArgs e)
{
    DataProviderScriptWebPart dataProvider = sender as DataProviderScriptWebPart;
    dataProvider.Properties.Add("MyProperty", this.MyProperty);
}

Ahora puede obtener esta propiedad en la plantilla de pantalla HTML:

<!--#_
    var myValue = ctx.DataProvider.get_properties()["MyProperty"];
_#-->
<div>_#= myValue =#_</div>

Otros consejos

Me pregunto por qué necesita una plantilla de exhibición para esto en absoluto!Puede colocar un límite de 5 números de resultado en CSWP y agregar una parte web del editor de contenido A el final de la página (después de CSWP) para guiar al usuario a la página nueva.

Licenciado bajo: CC-BY-SA con atribución
scroll top