コンテンツ検索Webパーツのコントロール表示テンプレートにパラメータを渡す方法?

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

質問

SharePoint 2013を使用すると、次の表示テンプレートを使用して5つのニュース記事を表示するために使用しているコンテンツ検索Webパーツがあります。

  • コントロール:list
  • item:左側の写真、右側の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>
.

他のヒント

私はなぜあなたがこれのために展示テンプレートが必要なのか疑問に思います!CSWPに5回の結果の制限を入力し、コンテンツエディタWebパーツを追加することができます。ページの終わり(CSWPの後)を新しいページにガイドします。

ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top