Cover Image for Next.jsブログに検索バーを追加する方法
Next.jsブログに検索バーを追加する方法

概要

今回の記事では、Next.jsブログサーバに検索バーを追加する方法を解説します。
追加

とにかくやってみる! ことで、next.jsなどフロントエンドに関連することを学んでいきましょう。

前提条件

  • googleアカウントをもっていること

目的

Googleカスタム検索バーの作成および配置すること!

追加

ブログサーバ構築の記事はこちらにあります

https://k69blog.com/posts/aws-cloudfront-s3-md-blog-server/

目次

内容

Googleカスタム検索バーを作成する。

  1. ここにアクセスする
    https://www.google.co.jp/cse/all

  2. 追加ボタンを押す
    追加

  3. 次の画面に移り、 検索エンジン名:k69blog を入力
    作成

ここは作成する検索エンジンの名前なので、何でもOKです

  1. 検索対象を指定してください
    特定のサイトまたはページを検索のラジオボタンを選択し、
    k69blog.com/*と入力し、追加ボタンを押す

k69blog.com内だけを検索する検索バーを作成する

指定

  1. 私はロボットではありませんをチェックし、作成ボタンを押す

    チェック

  2. 完成!
    完成

デフォルトだと、デザインがイマイチなので色合いなどをカスタマイズします

Googleカスタム検索バーをカスタマイズする

  1. ここにアクセスし、カスタマイズ対象を選択します。
    https://www.google.co.jp/cse/all

選択

  1. 左メニューのデザインを選択し、すべてのデザインの設定を押す
    選択

  2. 色合いなどをカスタマイズする
    プレビューを見ながら、ブログの配色に合わせてカスタマイズする。
    プレビュー

コードを取得する

レイアウトを選択し、ブログに設置するためにコードを取得します。
コード

取得したコード
<script async src="https://cse.google.com/cse.js?cx=c3e13445fe72c412c">
</script>
<div class="gcse-search"></div>

貼り付けるとこんな感じになりました。いいかんじですね。

"next.js"などのキーワードで検索結果を確認できます。

ちなみに
コピペでReactのコンポーネントとしては使用できません。

検索バーをコンポーネント化

検索バーのコードをReactコンポーネントにコピペでは動きません。
こちらのページを参考にコンポーネント化しました。

コピペして、cx=XXXXXXXXXXXXXXXXX を修正すればOKです。

google_search_bar.tsx
import { useRouter } from "next/router";
import { useEffect, VFC } from "react";

export const GoogleSearchBar: VFC = () => {
  const { asPath } = useRouter();

  useEffect(() => {
    try {
      console.log(asPath)
      const script = document.createElement('script');

      script.src = "https://cse.google.com/cse.js?cx=XXXXXXXXXXXXXXXXX";
      script.async = true;

      document.body.appendChild(script);
      document.body.removeChild(script);

    } catch (error) {
      console.error(error);
    }
  }, [asPath]);

  return (
    <div className="gcse-search"></div>
  );
};

こちらのページを参考にしました。

まとめ

本記事はいかがでしたか?Googleカスタム検索バーをReactで実装することはできたでしょうか?

今回作成した検索バーは上部にあるので、動かすとどのようなものかイメージできると思います。

私はScriptタグを毎回再読み込みするやり方でハマりました(笑)

もっと良いやり方をご存じの方はコメントいただけるとモチベーションUPにつながるので助かります。

https://marshmallow-qa.com/k69blog_com?utm_medium=url_text&utm_source=promotion

本記事を読んでいただきありがとうございまいた。
少しでもみなさまのお役に立てばうれしいです。

© 2022 k69

本サイトを通じて、たくさんの人がプログラミングに興味を持ち、 これがキッカケでモノづくりの楽しさに触れることができれば幸せです!