トップ回答者
コンテンツ検索webパーツでドキュメントの詳細画面のリンクを表示する方法

質問
-
お世話になっております。
リストアイテムや、ライブラリにアップロードしたドキュメントをコンテンツ検索webパーツで集約して表示しております。
コンテンツ検索webパーツ設定画面のプロパティのマッピングでは、集約したデータをクリックした際のリンクとして既定の「Path」を指定しています。
この設定では、集約したデータの中からアイテムをクリックした場合はアイテムの詳細画面が表示されるのですが、ドキュメントをクリックした場合はドキュメントが直接開かれてしまうため列が記載されている詳細画面が表示されません。
ドキュメントをクリックした際にも詳細画面を表示したいのですが、方法はございますでしょうか。
よろしくお願い致します。
回答
-
取り急ぎ、実現可能かどうかまで検証していませんが、私が思いついた案は、以下の2つです。
1.詳細画面表示用のURLを管理プロパティとして登録する。
2.表示テンプレートのURLを書き換える。1.は、詳細画面表示用のURL列を参照式を使って作成し、それを管理プロパティに登録する方法です。
ただ、検索対象のドキュメントライブラリすべてにその参照列を作らないといけないので、実用的ではないですね。ですので、2.が本命かと思いますので、やり方を簡単に書いてみます。
とりあえず、コンテンツ検索Webパーツの表示テンプレートにデフォルトの"左に画像、右に3行を表示"を用いているのであれば、[サイトコレクションの設定]-[マスターページとページレイアウト]-[Display Templates]-[Content Web Parts]の中の、Item_Picture3Lines.jsが対応しているので、このファイル内のコードでリンクを書き換えれば実現可能です。
(本来はファイルをコピーし、独自の表示テンプレートを作り、それをコンテンツ検索Webパーツで指定するようにすべきです)
このファイルを例にとると、ファイル内の、
var linkURL = $getItemValue(ctx, "Link URL");
のコードでリンク先を設定しているので、[リストのURL]/Forms/DispForm.aspx?ID=[アイテムのID]のURLを作成し、置き換えればよいかと。
(アイテムの詳細画面のURLもDispForm.aspxから変更可能なのですが、それは割切りで。。)もっと簡単な方法があるかもしれませんが、取り急ぎゴリ押しの実現方法ということで。
すべての返信
-
取り急ぎ、実現可能かどうかまで検証していませんが、私が思いついた案は、以下の2つです。
1.詳細画面表示用のURLを管理プロパティとして登録する。
2.表示テンプレートのURLを書き換える。1.は、詳細画面表示用のURL列を参照式を使って作成し、それを管理プロパティに登録する方法です。
ただ、検索対象のドキュメントライブラリすべてにその参照列を作らないといけないので、実用的ではないですね。ですので、2.が本命かと思いますので、やり方を簡単に書いてみます。
とりあえず、コンテンツ検索Webパーツの表示テンプレートにデフォルトの"左に画像、右に3行を表示"を用いているのであれば、[サイトコレクションの設定]-[マスターページとページレイアウト]-[Display Templates]-[Content Web Parts]の中の、Item_Picture3Lines.jsが対応しているので、このファイル内のコードでリンクを書き換えれば実現可能です。
(本来はファイルをコピーし、独自の表示テンプレートを作り、それをコンテンツ検索Webパーツで指定するようにすべきです)
このファイルを例にとると、ファイル内の、
var linkURL = $getItemValue(ctx, "Link URL");
のコードでリンク先を設定しているので、[リストのURL]/Forms/DispForm.aspx?ID=[アイテムのID]のURLを作成し、置き換えればよいかと。
(アイテムの詳細画面のURLもDispForm.aspxから変更可能なのですが、それは割切りで。。)もっと簡単な方法があるかもしれませんが、取り急ぎゴリ押しの実現方法ということで。