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'); }); })();