Hugoでショートコードを作成してみた。

hp

タイトルと少々趣旨が異なるのだけど、元々はサイトにTwitterのタイムラインを設定したいと言う所からです。
順を追ってやっていきます。

・サイトにタTwitterのタイムラインを埋め込みしたくなったの、ちょっと調べてみた。
 Twitterが公式に提供してくれている感じ。
 https://publish.twitter.com/#にアクセスする。

・入力フィールドにタイムラインとして表示したいユーザページのURLを入力する。
 今回の場合は、「https://twitter.com/mn_73」を入力する。

・次に何を表示したいか選択する。
 今回の場合は、タイムラインなので左を選択する。

・埋め込むHTMLコードが生成される。
 「set customization options」のリンクから多少カスタマイズもできる。
 「Copy Code」をクリックしたらクリップボードにコピーされる。
 後は、このコードをサイトに埋め込むだけ。

・トップページの「_index.md」にコードを埋め込んで確認してみる。

 が、「Tweets by mn_73」の文字だけ表示されて、肝心なタイムラインが表示されない???

<p><!-- raw HTML omitted -->Tweets by mn_73<!-- raw HTML omitted --> <!-- raw HTML omitted --><!-- raw HTML omitted --></p>

 Markdownでは、HTMLの記述もできるはずだけど、ページ生成時に素のHTMLコードがはじかれるみたい。

・素のHTMLを出力するショートコードを作成した。
 ググってみたら余計なコードを付けたくないって話で、書いたままを出力するショートコード書いている人がいました。
 今回はそれを拝借します。
 「D:\hugo\sites\hugo-site\layouts\shortcodes\rawhtml.html」を作成します。
 ファイルの内容は以下だけ。

{{ .Inner }}

・ 「_index.md」 の記載をショートコードを使う形で修正。(ショートコードで囲ってます。)

{{< rawhtml >}}<a class="twitter-timeline" href="https://twitter.com/mn_73?ref_src=twsrc%5Etfw">Tweets by mn_73</a> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> {{< /rawhtml >}}

・無事、タイムラインが表示されました。

お疲れさまでした。

参考サイト:
  https://srbrnote.work/archives/2772

P.S.
 気になってちょっと調べたら、Hugoの仕様が変わってそんな挙動になったみたい。
 先にこっちを見つけていたら安易に設定変えてそうだった。
 https://budougumi0617.github.io/2020/03/10/hugo-render-raw-html/

コメント

タイトルとURLをコピーしました