【GatsbyJS】ブログにソーシャルシェアボタンを追加した
2020-05-11はじめに
おはようございます!こんにちは!こんばんは!
のふのふ(@rpf_nob)と申します!!都内のスタートアップでフロントエンドエンジニアとして働いています。
今回は GatsbyJS ブログの記事ページに SNS 等のシェアボタンを追加します。
さまざまな人に見てもらいたいです!
GitHub の ReadMe をみれば簡単に実装できます。
前提
このブログは GatsbyJS の gatsby-starter-blog のテンプレートから作成しています。
ソースコードはこちら(参考になったという方は ⭐️ をポチッと押していただけると嬉しいです〜 🙇♂️)
パッケージのインストール
以下コマンドで[react-share]をインストールします。
npm install --save react-share
シェアボタンのコンポーネントを作る
[src/components/share/index.jsx]を新規作成し、コンポーネントを作成していきます。
今回は以下 4 つのシェアボタンを作ります。
- Line
ボタンに渡す props は実装したいシェアボタンの種類によっていろいろ違うので、GitHub の ReadMeを見てください。
import React from "react";
import {
FacebookShareButton,
TwitterShareButton,
LineShareButton,
LinkedinShareButton,
FacebookIcon,
TwitterIcon,
LineIcon,
LinkedinIcon,
} from "react-share";
const Share = props => {
const articleTitle = props.title;
const articleUrl = props.url;
const articleDescription = props.description;
const iconSize = 32;
return (
<React.Fragment>
<h3>SHARE!!</h3>
<div className="social-links">
<div className="social-links__icon">
<TwitterShareButton url={articleUrl} title={articleTitle}>
<TwitterIcon round size={iconSize} />
</TwitterShareButton>
</div>
<div className="social-links__icon">
<FacebookShareButton url={articleUrl} quote={articleDescription}>
<FacebookIcon round size={iconSize} />
</FacebookShareButton>
</div>
<div className="social-links__icon">
<LineShareButton url={articleUrl} quote={articleDescription}>
<LineIcon round size={iconSize} />
</LineShareButton>
</div>
<div className="social-links__icon">
<LinkedinShareButton url={articleUrl} quote={articleDescription}>
<LinkedinIcon round size={iconSize} />
</LinkedinShareButton>
</div>
</div>
</React.Fragment>
);
};
export default Share;
シェアボタンのコンポーネントを記事に挿入
[src/templates/blogpost/index.jsx]を以下のように修正します。
まずコンポーネントをインポート
import Share from "../components/share";
サイトの URL[siteUrl]と記事の URL の後ろ[slug]を取得
const siteUrl = data.site.siteMetadata.siteUrl;
const { slug, previous, next } = pageContext;
シェアボタンのコンポーネントをフッターの手前に挿入
以下 props でコンポーネントに渡す
- 記事タイトル
- 記事 URL
- 記事概要
<Share
title={post.frontmatter.title}
url={`${siteUrl}${slug}`}
description={post.excerpt}
/>
<footer>
<Bio />
</footer>
スタイル調整
あとは好みのスタイルに調整します。
ついでにナビゲーションバーのスタイルも調整しました。
.social-links {
margin-bottom: 40px;
&__icon {
display: inline;
margin-right: 10px;
}
}
これでシェアボタンが実装できました!!
まとめ
今回は GatsbyJS ブログの記事ページに SNS 等のシェアボタンを追加しました。
自分もこのブログだけではなく、いろいろな SNS を用いて情報を発信していきたいと思います!
他にも GatsbyJS のブログカスタマイズをいろいろやっているので、以下もあわせてご覧いただければと思います。
最後まで見ていただきありがとうございます!!