#8 Gatsby + WordPress REST APIでブログを作ろう【シンタックスハイライト(Prism)編】
#7で一応Gatsby.js+WordPress編は一区切りでしたが、いじっていく中でつまずいて情報があまりなかったのでここで紹介しておきます
内容は「Gatsby.jsでWordPress REST APIでブログ記事を引っ張ってきていて、gatsby-remark-prismjsを使ってコードをハイライトしたいけど上手くいかない!!」の解決法です
gatsby-remark-prismjsはマークダウン用みたいなので当たり前ですよね笑
最適な解決法かはわかりませんが、一応ちゃんと動いていますので参考にしてみてください
prism.jsを入れる
yarn add prismjs
or
npm install prismjs
記事のコンポーネントで読み込む
記事が表示されるコンポーネントでprismのjsと好きなprismのテーマのcssを読み込む
import "prismjs/themes/prism-okaidia.css";
import Prism from "prismjs";
このブログに沿って制作している方は以下のようになっているかと思います
const BlogPostTemplate = ({ location, data, pageContext }) => {
return(
~~~~
)
}
それを以下に変えます
class BlogPostTemplate extends React.Component {
componentDidMount() {
Prism.highlightAll();
}
render() {
const { relatedPosts } = this.props.pageContext
const post = this.props.data.wordpressPost
return(
~~~
)
}
}
componentDidMount
でコンポーネントがマウントされた直後にPrismのhighlightAllを発動させます
*const post = this.props.data.wordpressPost
も追加しているので、{post.title}
でタイトルが表示されます。他のデータも同じです。
WordPress側での投稿
コードを載せる時にしたのタグで囲めばオッケーです
<pre>
<code class="language-言語名”>
ここにコード
</code>
</pre>
*中のコードはエスケープツールなどでエスケープしておかないと反映されません。
WordPressなのでAddQuickTagというプラグインで簡単にタグを追加できるように設定しておくと楽です^ ^
以上でちゃんとシンタックスハイライトがされるかと思います
gatsby公式の「gatsby-remark-prismjs」がマークダウンファイル用に作られているみたいで、WordPress REST APIで記事を引っ張ってきている場合はどうしても上手くいきませんでした
結局GatsbyJSもreactなので普通に記事のコンポーネントでPrismを読み込んで、コンポーネントがマウントされたタイミングでにPrismのハイライトを発火させているだけです
技術系ブログでシンタックスハイライトがないのは辛いのでできてよかったです^ ^
ではまた何かあればここで紹介していきますね〜〜
Share if you like
Recent Posts最新記事
- 2022.07.282023.01.01雑記
久しぶりの投稿、何を書いたらいいかわからない
- 2020.05.27写真
最近撮っているiPhoneの写真たち
- 2020.03.26写真
スペイン・バルセロナのトマティーナ祭りツアーの旅の記録【+スナップ写真】
- 2020.03.112020.03.14ライフスタイル
NotionとGoogleカレンダーでタスク管理してみたら便利だった話
- 2020.02.102020.06.13お知らせ
FUJIFILMのグループ展示で写真を出展します
- 2020.01.112020.01.12お知らせ
2019年の振り返りと2020年の抱負
Commentなんでも気軽にどうぞ^ ^