マニュアル

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