Astroでパンくずリストの構造化データを作る

以前のブログはこちら

広告

こんにちは。ましじめの田村です。

私が執筆した著書、『現場のプロから学ぶ CSSコーディングバイブル』は、Web制作の現場で役立つテクニックやノウハウをまとめています。
興味を持っていただけた方は、ぜひご覧ください。
https://amzn.to/3A8kNHC

このリンクは Amazon のアフィリエイトプログラムを通じて設定されています。

こんにちは。田村です。
Astroでパンくずリスト(BreadcrumbList)の構造化データを作る機会がありましたのでメモです。

パンくずリスト(BreadcrumbList)の構造化データ を詳しく確認したい方はこちらのリンクから確認してください。

コードと使い方

StructuredDataのコンポーネントを作ります。

// StructuredData.astro

---
export interface Hierarchy {
  position: number;
  itemPath: string;
  itemName: string;
}

interface Props {
  hierarchies?: Hierarchy[];
}

const { hierarchies } = Astro.props;

const schema = {
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "item": Astro.site,
      "name": "ましじめ株式会社"
    },
    ...(hierarchies
      ? hierarchies.map((hierarchy) => ({
          "@type": "ListItem",
          "position": hierarchy.position,
          "item": `${Astro.site}${hierarchy.itemPath}`,
          "name": hierarchy.itemName
        }))
      : [])
  ]
};

---

<script type="application/ld+json" set:html={JSON.stringify(schema)} />

import先で次のように使用します。

---

...

const hierarchies = [
  {
    position : 2,
    itemPath: 'blog',
    itemName: 'スタッフブログ'
  },
  {
    position : 3,
    itemPath: 'blog/entry1.html',
    itemName: '記事1'
  }
]
---

...

<StructuredData hierarchies={hierarchies} />

結果

次のような構造化データが出力されます。

<script type="application/ld+json">
{
	"@context": "http://schema.org",
	"@type": "BreadcrumbList",
	"itemListElement":
	[
	  {
		"@type": "ListItem",
		"position": 1,
		"item":
		{
		"@id": "https://masizime.com/",
		"name": "ましじめ株式会社"
		}
	  },
	  {
		"@type": "ListItem",
		"position": 2,
		"item": "https://masizime.com/blog",
		"name": "スタッフブログ"
	  },
	  {
		"@type": "ListItem",
		"position": 3,
		"item": "https://masizime.com/blog/entry1.html",
		"name": "記事1"
	  }
	]
}
</script>

この記事を書いた人

たむら しょうご

HTML&CSSコーダー

ウェブアクセシビリティ対応、フロントエンド開発、CMSを利用したウェブサイト制作を担当しています。
趣味はガーデニングです。

ましじめのスキルが必要ですか?

遠慮なくご相談ください。我々はあなたのプロジェクトに最善を尽くし、あなたのウェブサイトの制作を強力にサポートいたします。

お問い合わせはこちらから