2012-09-26 23 views
4

遞歸循環我有這樣的循環中DotLiquid寫DotLiquid

{% for page in Page -%} 
    {{ page.Title }} 
    <ul> 
     {% for subpage in page.Pages -%} 
      <li>{{ subpage.Title }}</li> 
      <!-- subpage.Pages has more pages and so on... --> 
     {% endfor -%} 
    </ul> 
{% endfor -%} 

每個subpage對象在列表中的Pages屬性與其他子頁面(如第一Page對象

如何我在這些子頁上寫一個遞歸迭代來創建完整的樹?

回答

3

將您的代碼移動到單獨的文件中,並使用include標記

This相關問題包括一些示例模板代碼 - 它適用於Liquid的Ruby版本,但它應該是直接可移植的。

根據您需要執行的操作,您可以將Template.FileSystem設置爲內置LocalFileSystem以解析包含或創建您自己的。請參閱source code for LocalFileSystem以獲取IFileSystem的示例實現。

+1

哦作者自己的回答,謝謝!我可以說我非常喜歡DotLiquid嗎? :)我將實施FileSystem,並沒有意識到這一點,並看看我能否做到。 – Marc

+0

實際上,在DotLiquid中實現LocalFileSystem來加載模板之後,實際上是在相關問題中列出的'{%include MyTemplate%}'而不是{{'menu_item'with menu_items}}「。我知道,它的Ruby版本,我只是想在這裏提及其他人;) – Marc

+0

@Tim Jones是否可以從磁盤文件傳遞一個對象到包含的模板? –