Zolaのshortcodesを使ってみた

Zolaのshortcodesを使ってみた

Youtube動画の埋め込み

これは、Zolaの公式でサンプルコードがあるので使ってみます。

templates/shortcodes/youtube.html を追加します。

<div {% if class %}class="{{class}}" {% endif %}>
  <iframe
    src="https://www.youtube.com/embed/{{id}}{% if autoplay %}?autoplay=1{% endif %}"
    webkitallowfullscreen
    mozallowfullscreen
    allowfullscreen
  >
  </iframe>
</div>

そして、Markdownではこのように書いてみます。

{{ youtube(class="yt", id="gdIuTqrFPx4") }}

すると…

{{ youtube(class=“yt”, id=“gdIuTqrFPx4”) }}

表示出来ました!

リンクカードの埋め込み

Youtubeのコードを参考に、iframe タグで実装を試みました。

templates/shortcodes/card.html を追加します。

<div {% if class %}class="{{class}}" {% endif %}>
  <iframe
    style="width: 600px; max-width: 100%; display: block; box-shadow: 0 0 10px rgba(0, 0, 0, 0.5)"
    title="{{title}}"
    src="{{url}}"
    frameborder="0"
    scrolling="no"
  >
  </iframe>
</div>

そして、Markdownも書いてみます。

{{ card(title="Deno公式サイト", url="https://deno.com") }}

コンソールでエラーが発生していた。

Refused to display 'https://deno.com/' in a frame because it set 'X-Frame-Options' to 'deny'.

セキュリティ上、デフォルトで deny が設定されているようだ。

object から iframe まで — 一般的な埋め込み技術 | MDN

セキュリティ知識無しでiframeを使うのなんか怖くなってきたので別の方法を探してみよう。一旦リンクカードは保留で。

{{ card(title=“Deno公式サイト”, url=“https://deno.com”) }}