0

JekyllサイトをMiddlemanに変換しています。これらのライブラリで処理するために、filename.html.md.liquid.erbのように、ERb、liquid、kramdownの順にファイルに名前を付けました。私が見つけたのは、ファイルにerbタグが少なくとも1つない場合、テンプレートの解析が停止し、ファイル全体が液体で解析されてからkramdownで解析されるのではなく、プレーンテキストとしてレンダリングされることです。単に追加する

<% if nil %>
<% end %>

ソースドキュメントの下部にあると、テンプレートチェーン全体がレンダリングされますが、これらを強制的に含める必要はありません。私は単にオプションが欲しいです。

編集:これは、拡張機能を介して指定されたテンプレートのいずれかに実際に実行する処理がない場合にも当てはまることがわかりました。したがって、たとえば、filename.html.md.liquid.erbがあり、ERbタグはあるが液体タグがない場合、ERbは正常にレンダリングされますが、Markdownは静的テキストとして出力されます。

問題がどこにあるのかわからないという理由だけで、これをティルトとミドルマンの両方としてタグ付けしました。

任意のポインタをいただければ幸いです。

4

1 に答える 1

0

この理由はキャッシングに関連しているようです。キャッシュ呼び出しを削除すると、テンプレートはチェーンの最後までレンダリングされます。また、テンプレート拡張機能を使用するようにキャッシュキーを変更しましたが、これも機能するようです。render.rb:257をに変更することによって

template = cache.fetch("compiled_template_#{extension}".to_sym, options, body) do
    ::Tilt.new(path, 1, options) { body }
end

テンプレートチェーンは、前のテンプレートの処理にそのテンプレート言語タグが含まれていなくても、残りの拡張機能を解析します。これよりも良い方法があるかもしれないので、私はミドルマンで問題を開きました。

于 2013-02-25T17:20:48.250 に答える