記事一覧にカテゴリーの表示 | Gatsbyブログカスタマイズ
Webサイト高速化のための 静的サイトジェネレーター活用入門を通じて作成したこのブログのカスタマイズとして、記事一覧にカテゴリーの表示を加えました。
すでに記事ページで実装されている内容を流用することができたため、比較的容易に対応が可能でした。
対応が必要なファイル
記事一覧は、3箇所存在するため、3つのファイルに対応が必要です。
いずれも同じ記述なので、1つにだけしっかりと対応すれば、あとは流用することで対応可能です。
▼HOME
src/pages/index.js
▼すべての記事一覧
src/templates/blog-template.js
▼カテゴリー別記事一覧
src/templates/cat-template.js
具体的な対応
HOMEを一例として、具体的な対応をご紹介します。
カテゴリー表示用のアイコン定義
カテゴリー表示用のアイコン(faFolderOpen)を定義します。
ファイル上部あたりの記述です。
// Before
import { faClock, faSyncAlt } from "@fortawesome/free-solid-svg-icons"
// After
import { faClock, faSyncAlt, faFolderOpen } from "@fortawesome/free-solid-svg-icons"
カテゴリー表示用のHTML要素を記述
カテゴリー表示をするHTMLの要素を記述します。
記事一覧では、それぞれの記事自体がリンクになっているため、その子要素であるカテゴリーからはリンクを削除しました。
ファイルの中頃、aside内のtimeの次に追記します。
// Before
<aside>
<time dateTime={node.publishDate}>
<FontAwesomeIcon icon={faClock} />
{node.publishDateJP}
</time>
</aside>
// After
<aside>
<time dateTime={node.publishDate}>
<FontAwesomeIcon icon={faClock} />
{node.publishDateJP}
</time>
<div className="cat">
<FontAwesomeIcon icon={faFolderOpen} />
<ul>
{node.category.map(cat => (
<li className={cat.categorySlug} key={cat.id}>{cat.category}</li>
))}
</ul>
</div>
</aside>
カテゴリーをGraphQLで呼び出し
カテゴリー名などを表示させるために、記述を追記して定義します。
ファイル下部あたりのqueryへの記述です。
// Before
publishDate
id
// After
publishDate
category {
category
categorySlug
id
}
id
スタイル調整
ここまででHTML要素の出力が実現できます。
あとはお好みでCSSによるスタイル調整を行ってください。
スタイル調整にはSCSSを利用するとやりやすいので、オススメです。