Как пройти параметры на шаблон отображения управления веб-частью поиска контента?
-
10-12-2019 - |
Вопрос
Использование SharePoint 2013 У меня есть веб-часть поиска контента, которую я использую для отображения 5 новостей, используя следующие шаблоны отображения:
- .
- Управление: список
- Предмет: изображение слева, 3 строки справа
и это работает просто хорошо.
Что я хотел бы включить ссылку после 5 новостных статей, которые возьмут пользователя на страницу «Архив новостей», где она отображается все новости.
Я думаю о создании пользовательского шаблона дисплея управления на основе шаблона отображения OOTB Control_list.js.Я полагаю, я мог бы сложный код ссылки на архив новостей в шаблоне отображения, но я хотел бы сделать его многоразовым.Есть ли способ, которым я мог динамически передавать данные на шаблон дисплея управления?
Любые другие предложения о том, как подходить к этому?
Решение
Вы должны наследовать contentbysearchwebpart и перегружать событие 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);
}
.
Теперь вы можете получить это свойство в шаблоне отображения HTML:
<!--#_
var myValue = ctx.DataProvider.get_properties()["MyProperty"];
_#-->
<div>_#= myValue =#_</div>
. Другие советы
Мне интересно, почему вам нужно отобразить шаблон для этого вообще!Вы можете поставить предел 5 каких-либо результатов в CSWP и добавить веб-часть редактора контента в конец страницы (после CSWP), чтобы направлять пользователю на новую страницу.