0

我正在将 Jekyll 网站转换为 Middleman。我已将我的文件命名为 filename.html.md.liquid.erb,以便按以下顺序处理这些库:ERb,然后是liquid,然后是 kramdown。我发现如果我在文件中没有至少一个 erb 标签,模板解析就会停止,整个文件将呈现为纯文本,而不是先被液体解析,然后再被 kramdown 解析。只需添加

<% if nil %>
<% end %>

在源文档的底部会导致整个模板链被渲染,但我不想被迫包含这些。我只是想拥有选择权

编辑:我刚刚发现,如果通过扩展指定的任何模板实际上没有任何处理要做,这也适用。因此,例如,如果我有 filename.html.md.liquid.erb 并且我有 ERb 标签但没有液体标签,则 ERb 将呈现正常,但 Markdown 将作为静态文本输出。

我将其标记为倾斜和中间人只是因为我不确定问题可能出在哪里。

任何指针将不胜感激。

4

1 回答 1

0

看起来原因与缓存有关。当我删除缓存调用时,模板会一直呈现在链上。我还更改了缓存键以使用模板扩展名,这似乎也有效。通过将rendering.rb:257更改为

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

即使前一个模板的处理不包含任何模板语言标签,模板链也会解析其余的扩展。我在 Middleman 中打开了一个问题,因为可能有比这更好的方法来解决它。

于 2013-02-25T17:20:48.250 回答