1

Jekyllサイトで使用しているカスタムLiquidフィルターがあります。

{{ page.url | git_modified }}

これは、gitログ(プラグインコードはこちら)から変更日を生成します。

多くの場合、コンテキストに応じて、これを文字列またはXMLスキーマに変換するための追加のフィルターを追加することがあります{{ page.url | git_modified | date_to_string }}git_modifiedなんらかの理由でフィルターが投稿の時間オブジェクトを返さない場合を除いて、すべてが厄介です。その場合、私はまともな失敗条件を書き込もうとしていますが、これを完全に理解することはできません。

if呼び出しを液体ステートメントでラップして、変数が最初に定義されているかどうかを確認したいと思います。

{% if defined?( {{ page.url | git_modified }} %}

{{しかし、 Liquidブロックオプション({%、 )内でLiquidタグ()を使用できないようです%}。私はLiquidでこれを回避できると思いましたcapture

{% capture page_modified %}{{ page.url | git_modified }}{% endcapture %} 
{% if defined?(page_modified) %} 
{{ page.url | git_modified | date_to_string }}
{% endif %}

ifしかし、前述の変数はステートメントで使用できないようです。助言がありますか?

4

1 に答える 1

4

このようにしてみてください:

{% capture page_modified %}
    {{ page.url }}
{% endcapture %}

{% if page_modified %} 
    {{ page.url }}
{% endif %}

が定義されていない場合page_modified、その値はnilとにかくなります。したがってif、純粋なRubyの場合と同じように構成を使用してください。ここでjekyll1.0.0.beta2でテストしjekyll new test、次に上記のコードでファイルを作成しましたが、機能しました。:)

于 2013-03-26T07:08:17.383 に答える