我進入Jekyll在很大程度上,並希望使用它作爲一個通用的前端開發平臺,但我遇到了液態模板語言的侷限性,特別是它與Django模板的區別。Jekyll模板使用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 %}
然後,我有一個哲基爾網頁,其中包括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%的方式,最後一點需要修復。
我剛剛進一步測試,發現雖然液體繼承在*佈局*上工作正常,但是當您到達實際的*內容*頁面時,它會失敗 - 我認爲這是您問題出現的地方(但是正如我所說 - 一旦你認真閱讀了一個特定的內容,我仍然相信YAML是一個更好的方式來包含輔助內容,而不是將內容放在你的內容區域中...... – heliotrope
YAML絕對是最好的方法,但它變成了如果你的大部分內容只是大塊不可分割的HTML,那麼不必要的複雜。 除了標題,我並不需要大量的原始數據_process_。我只需要插入大塊的HTML到特定的,該頁面的非連續區域描述YAML中的HTML笨拙且不可維護。 – xcession