MTNetSearchDataLayer の仕組みを利用したサイト内検索のカスタマイズ
サイト内検索の設置方法は以下を参考にしてください。
MTNetSearchDataLayer の仕組みを利用する
MTNetSearchDataLayer の仕組みを使って、プログラムを使って検索を実行したり、検索結果を取得することができます。
以下のようなスクリプトを、MTNetSearchDataLayer を実行したいページに挿入します。
<script>
window.MTNetSearchDataLayer = window.MTNetSearchDataLayer || [];
function MTNetSearch() { return MTNetSearchDataLayer.push(arguments); }
</script>
検索の実行
MTNetSearch("search", "テスト");
検索結果の取得
registerHandler メソッドでハンドラーを登録することで、検索結果を取得することができます。
var handler = function(data) { ... };
MTNetSearch("registerHandler", handler);
検索結果は以下のようなオブジェクトになっています。
interface QueryData {
type: string; // 処理のタイプ。現在は `search-result` のみが入ります。
query: string; // 検索ワード
results: Entry[]; // 検索結果の記事の配列
}
登録したハンドラーが不要になった場合、 unregisterHandler メソッドで登録の解除ができます。
MTNetSearch("unregisterHandler", handler);
MTNetSearch利用例
MTNetSearch("search", "テスト");
registerHandler
ページビューのカウント (gtag.js)
検索ページ内で検索条件を変更して検索した場合に、+1ページビューとしてカウントしたいときは以下の JavaScript を検索ページに貼り付けておけばカウントできます。
(function() {
window.MTNetSearchDataLayer = window.MTNetSearchDataLayer || [];
function MTNetSearch() { return MTNetSearchDataLayer.push(arguments); }
var initialSearch = location.search;
MTNetSearch("registerHandler", function(data) {
if (initialSearch === location.search) {
initialSearch = null;
return
}
gtag('config', 'GA_MEASUREMENT_ID', {'page_path': location.pathname + location.search});
});
})();
ページビューのカウントをする (analytics.js)
検索ページ内で検索条件を変更して検索した場合に、+1ページビューとしてカウントしたいときは以下の JavaScript を検索ページに貼り付けておくことでカウントできます。
(function() {
window.MTNetSearchDataLayer = window.MTNetSearchDataLayer || [];
function MTNetSearch() { return MTNetSearchDataLayer.push(arguments); }
var initialSearch = location.search;
MTNetSearch("registerHandler", function(data) {
if (initialSearch === location.search) {
initialSearch = null;
return
}
ga('set', 'page', location.pathname + location.search);
ga('send', 'pageview');
});
})();