monaka

Next.jsでパンくずリストを作る (リッチリザルト対応)

Next.jsでパンくずリストを作る方法を紹介。今回はcategoryコンポーネントを流用してパンくずリストを作った。さらに深い階層の場合は各自で読み替えてほしい。今回もmicroCMSブログのデザインに寄せる形で作成した。追加でリッチリザルトにも対応させている。

完成系イメージ

Breadcrumbコンポーネントを作成する

まずはBreadcrumbコンポーネントを作成していく。表示するのは「記事一覧(TOP)」と「カテゴリ」を表現して、パンくずリストにする。そのためcategoryの情報をインポートする。Breadcrumbディレクトリ配下にindex.tsxとindex.module.cssを作成して、以下のようにした。

import type { Category } from "@/app/_libs/microcms";
import styles from "./index.module.css";
import Link from "next/link";

type Props = {
  category: Category;
};

export default function Breadcrumb({ category }: Props) {
  const breadcrumbList = [
    {
      "@type": "ListItem",
      position: 1,
      name: "記事一覧",
      item: "https://monaka496.com/",
    },
    {
      "@type": "ListItem",
      position: 2,
      name: category.name,
      item: `https://monaka496.com/blog/category/${category.id}`,
    },
  ];

  return (
    <>
      {/* パンくずリスト表示 */}
      <ul className={styles.breadcrumb}>
        <li className={styles.breadcrumbitem}>
          <Link href="/" className={styles.breadcrumblink}>
            記事一覧
          </Link>
        </li>
        <li className={styles.breadcrumbitem}>
          <Link
            href={`/blog/category/${category.id}`}
            className={styles.breadcrumblink}
          >
            {category.name}
          </Link>
        </li>
      </ul>

      {/* 構造化データを埋め込む */}
      <script
        type="application/ld+json"
        dangerouslySetInnerHTML={{
          __html: JSON.stringify({
            "@context": "https://schema.org",
            "@type": "BreadcrumbList",
            itemListElement: breadcrumbList,
          }),
        }}
      />
    </>
  );
}
.breadcrumb {
  display: flex;
  flex-wrap: wrap;
  padding-top: 10px;
}
.breadcrumbitem {
  display: flex;
  flex-wrap: wrap;
}
.breadcrumbitem:not(:last-child)::after {
  content: ">";
  margin: 0 10px;
}
.breadcrumblink {
  color: #331cbf;
}

articleコンポーネントで呼び出す

記事を表示しているarticleコンポーネントで呼び出しをする。追加したのは以下の部分

import Breadcrumb from "../Breadcrumb";

(中略)

<Breadcrumb category={data.category} />

リッチリザルトのチェック

リッチリザルトテストというものがある。デプロイ後のページのURLを入力して、チェックOKになっていればリッチリザルトにも対応できている。

まとめ

今回はパンくずリストの機能追加と合わせて、リッチリザルトにも対応させてみた。microCMSブログのデザインに寄せつつ、リッチリザルト部分をアレンジしてみたがうまく行ってよかった。今回の機能追加で、リッチリザルトの対応方法もわかったので、ほかに追加できるところがないかも検討したい

Next.js+ヘッドレスCMSではじめる! かんたんモダンWebサイト制作入門 高速で、安全で、運用しやすいサイトのつくりかた
Next.js+ヘッドレスCMSではじめる! かんたんモダンWebサイト制作入門 高速で、安全で、運用しやすいサイトのつくりかた
Amazon楽天市場Yahoo!ショッピング

関連記事