Nunjucksのテンプレート内で{{***}}を文字として使いたい!

Nunjucksのテンプレート内で{{***}}を文字として使いたい!

半袖だと寒いと感じることも増えてきましたね。
お腹を冷やさないように気をつけたいyanagimachiです。

さて、今回はNunjucksのテンプレート内でInstafeed.jsなどで使われている{{***}}を使うと、思ったような表示ができない件についてです。

エラーが起きた記述

jsは基本的に外部ファイルに書くのですが、各個人ページにその人のインスタのフィードを取得したいと思って、テンプレートに直接以下のように記述していました。

<script>
    //instagram
    $(function(){
        var feed = new Instafeed({
            //略
            template: '<a href="{{link}}"><img src="{{image}}" alt="{{caption}}"></a>'
        });
        feed.run();
    });
</script>

しかしHTMLに書き出されたものを見たところ、以下のようになってしまいました。 当然インスタグラムのフィードは取得できません。

<script>
    //instagram
    $(function(){
        var feed = new Instafeed({
            //略
            template: '<a href=""><img src="" alt=""></a>'
        });
    feed.run();
    });
</script>

それぞれの{{***}}の使い方

Nunjucks

個別ページや共通で指定した変数をテンプレート内で使える方法です。 例えば個別ページで

---
title: "yanagimachi"
---

と指定して、テンプレート側で

<title>{{title}} | バシャログ。メンバー</title>

とすると、

<title>yanagimachi | バシャログ。メンバー</title>

と出力されます。

Instafeed.js

templateオプションで使える変数です。 今回は

  • {{link}}:投稿のURL
  • {{image}}:投稿した画像のパス
  • {{caption}}:投稿のキャプション

を使用しました。

つまりどうやって書けばいいのか

記述方法がかぶっていたため、変数がNunjucksで指定されていなくて空欄になってしまっていました。変数の外側にも{{}}をつけてあげる必要があります。

template: '<a href={{"{{link}}"}}><img src={{"{{image}}"}} alt={{"{{caption}}"}}></a>'

ダブルコーテーションの内側につけたり、ダブルコーテーションをなくすとエラーが出るので、ご注意ください。

  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ