マークダウンファイルのYAML見出しを使用して、他の場所で使用できるブログ投稿にexcerpt
変数を追加しています。これらの抜粋の1つでは、マークダウンリンクマークアップを介して以前のブログ投稿を参照し、サイトのベースURLの代わりに液体テンプレートデータ変数{{ site.url }}
を使用しています。
だから私は(それをいくらかトリミングした)のようなものを持っています
---
title: "Decluttering ordination plots in vegan part 2: orditorp()"
status: publish
layout: post
published: true
tags:
- tag1
- tag2
excerpt: In the [earlier post in this series]({{ site.url }}/2013/01/12/
decluttering-ordination-plots-in-vegan-part-1-ordilabel/ "Decluttering ordination
plots in vegan part 1: ordilabel()") I looked at the `ordilabel()` function
----
ただし、jekyllとMaruku mdパーサーはこれを好まないため、YAMLヘッダーで液体マークアップを使用できないのではないかと思われます。
Jekyllによって処理されるページのYAMLヘッダーで液体マークアップを使用することは可能ですか?
私がマルクから得ているエラーは次のとおりです。
| Maruku tells you:
+---------------------------------------------------------------------------
| Must quote title
| ---------------------------------------------------------------------------
| the [earlier post in this series]({{ site.url }}/2013/01/12/decluttering-o
| --------------------------------------|-------------------------------------
| +--- Byte 40
そして
| Maruku tells you:
+---------------------------------------------------------------------------
| Unclosed link
| ---------------------------------------------------------------------------
| the [earlier post in this series]({{ site.url }}/2013/01/12/decluttering-or
| --------------------------------------|-------------------------------------
| +--- Byte 41
そして
| Maruku tells you:
+---------------------------------------------------------------------------
| No closing ): I will not create the link for ["earlier post in this series"]
| ---------------------------------------------------------------------------
| the [earlier post in this series]({{ site.url }}/2013/01/12/decluttering-or
| --------------------------------------|-------------------------------------
| +--- Byte 41
YAML内に液体変数をネストすることは不可能だと思います。少なくとも、私はそれを行う方法を理解していません。
うまくいく1つのアプローチは、 液体の置換フィルター を使用することです。具体的には、変数の置換に使用する文字列を定義します(例:!SITE_URL!
)。次に、置換フィルターを使用して、出力中に目的のJekyll変数(例:site.url
)に切り替えます。これが私のjekyll0.11インストールで期待通りに動作するカットダウンされた.mdファイルです:
---
layout: post
excerpt: In the [earlier post in this series](!SITE_URL!/2013/01/12/)
---
{{ page.excerpt | replace: '!SITE_URL!', site.url }}
私のマシンでそれをテストすると、URLが適切に挿入され、期待どおりにマークダウンからHTMLリンクに変換されます。置き換えるアイテムが複数ある場合は、複数のreplace呼び出しをつなぎ合わせることができます。
---
layout: post
my_name: Alan W. Smith
multi_replace_test: 'Name: !PAGE_MY_NAME! - Site: [!SITE_URL!](!SITE_URL!)'
---
{{ page.multi_replace_test | replace: '!SITE_URL!', site.url | replace: '!PAGE_MY_NAME!', page.my_name }}
重要な注意点は site.urlを明示的に設定する必要があります 値です。 Jekyllでは無料で入手できません。 _config.yml
ファイルで次のように設定できます。
url: http://alanwsmith.com
または、jekyllを呼び出すときに定義します。
jekyll --url http://alanwsmith.com
今日、私は同様の問題に遭遇しました。解決策として、ネストされた液体テンプレートを展開できる次の単純なJekyllフィルタープラグインを作成しました(例:YAMLフロントマターの液体変数):
module Jekyll
module LiquifyFilter
def liquify(input)
Liquid::Template.parse(input).render(@context)
end
end
end
Liquid::Template.register_filter(Jekyll::LiquifyFilter)
フィルタは、site-rootディレクトリの「_plugins」サブディレクトリに配置することでJekyllサイトに追加できます。上記のコードは、yoursite/_plugins /liquify_filter.rbファイルに簡単に貼り付けることができます。
その後、次のようなテンプレート...
---
layout: default
first_name: Harry
last_name: Potter
greetings: Greetings {{ page.first_name }} {{ page.last_name }}!
---
{{ page.greetings | liquify }}
...「GreetingsHarryPotter!」のような出力をレンダリングする必要があります。液化フィルターが内部の液体出力ブロックでも指定されている限り、拡張はより深いネストされた構造に対しても機能します。もちろん、{{site.url}}のようなものも機能します。
Update-これはRuby gem: https:// github。 com/gemfarmer/jekyll-liquify 。