Gatsbyの投稿ページ、トップページの投稿一覧へ追加する。
目次
投稿ページへタグを表示する
投稿テンプレートへタグの表示を追加する。
GraphQLのpageQueryの取得項目へtags
を追加して投稿のタグ情報を取得する。
日時の上に取得したタグを表示する。
※タグのURI作成用のプラグインのインポートが必要
src/templates/blog-post.jsを修正する。
// URI作成用のプラグイン
import kebabCase from "lodash/kebabCase"
// タグへ#をつけて表示する
<header>
<h1 itemProp="headline">{post.frontmatter.title}</h1>
<p>
{post.frontmatter.tags.map(tag => (
<React.Fragment key={tag}>
<Link to={`/tags/${kebabCase(tag)}/`}>
#{tag}
</Link>
{' '}
</React.Fragment>
))}
</p>
<p>{post.frontmatter.date}</p>
</header>
// 取得する項目へtagsを追加
export const pageQuery = graphql`
query BlogPostBySlug(
$id: String!
$previousPostId: String
$nextPostId: String
) {
site {
siteMetadata {
title
}
}
markdownRemark(id: { eq: $id }) {
id
excerpt(pruneLength: 160)
html
frontmatter {
title
date(formatString: "MMMM DD, YYYY")
description
tags
}
}
previous: markdownRemark(id: { eq: $previousPostId }) {
fields {
slug
}
frontmatter {
title
}
}
next: markdownRemark(id: { eq: $nextPostId }) {
fields {
slug
}
frontmatter {
title
}
}
}
`
トップページの投稿一覧へタグ表示する
投稿一覧のそれぞれの投稿内容へタグの表示を追加する。
GraphQLのpageQueryの取得項目へtags
を追加して投稿のタグ情報を取得する。
日時の後ろへ取得したタグを表示する。
※タグのURI作成用のプラグインのインポートが必要
src/templates/blog-post.jsを修正する。
// URI作成用のプラグイン
import kebabCase from "lodash/kebabCase"
// 投稿一覧へタグ表示を追加
<header>
<h2>
<Link to={post.fields.slug} itemProp="url">
<span itemProp="headline">{title}</span>
</Link>
</h2>
<small>{post.frontmatter.date}</small>
<small>
{` `}
{post.frontmatter.tags.map(tag => (
<React.Fragment key={tag}>
<Link to={`/tags/${kebabCase(tag)}/`}>
#{tag}
</Link>
{' '}
</React.Fragment>
))}
</small>
</header>
// 取得情報へtagsを追加
export const pageQuery = graphql`
{
site {
siteMetadata {
title
}
}
allMarkdownRemark(sort: { frontmatter: { date: DESC } }) {
nodes {
excerpt
fields {
slug
}
frontmatter {
date(formatString: "MMMM DD, YYYY")
title
description
tags
}
}
}
}
`