我正在深入了解 Jekyll,并希望将其用作通用前端开发平台,但我遇到了 Liquid 模板语言的限制,特别是它与 Django 模板的区别。
我发现了液体继承 gem,它添加了 Django 中最重要的 Extends 和 Block 语法。这篇博文进一步扩展了 gem 以适应 Jekyll 的文件系统: http: //www.sameratiani.com/2011/10/22/get-jekyll-working-with-liquid-inheritance.html
问题是它似乎并没有以与 Django 完全相同的方式实现块,这实际上使 gem 无用。
我有两个 jekyll“布局”——为了便于理解——parent.html 和 child.html。这些都不包含 YAML 部分。
家长
<html>
{% block foo %} {% endblock %}
</html>
孩子
{% extends _layouts/parent.html %}
{% block foo %}
<div>
Bar comes next:
{% block bar %} {% endblock %}
</div>
{% endblock %}
然后我有一个 jekyll 页面,其中包含一个 YAML 部分,因此:
---
title: test
---
{% extends _layouts/child.html %}
{% block bar %}My title is {{ page.title }} {% endblock %}
我的期望:
<html>
<div>
Bar comes next:
My title is test
</div>
</html>
我得到什么:
<html>
<div>
Bar comes next:
</div>
</html>My title is test
似乎有些东西未能将 mypage.html 中的块视为有资格插入到父/子的合适位置,尽管它显然仍在做某事。
我不是 ruby 开发人员,而且对 Jekyll 相当陌生,所以我需要帮助确定这个堆栈的哪一部分失败了。github上的液体继承问题表明其他人正在遇到这个块嵌套问题:https ://github.com/danwrong/liquid-inheritance/issues/3
我已经尝试了几个液体继承的分支,其中许多显然解决了这个问题正则表达式,但似乎没有一个可以解决这个问题。
我想做的事情根本不可能吗?看来我至少完成了 85% 的路,最后一点需要修复。