我正在嘗試爲Jekyll編寫一個自定義標籤插件,它將輸出網站上所有頁面(不是帖子)的分層導航樹。我基本上想要嵌套<ul>
的鏈接(將頁面標題作爲鏈接文本)添加到具有由某個CSS類標記的當前頁面的頁面。無法從Jekyll插件獲取頁面數據
我對ruby沒有經驗。我是一個PHP的傢伙。
我想我只是試圖迭代所有頁面並輸出一維列表來確保我至少可以做到這一點。這是我到目前爲止:
module Jekyll
class NavTree < Liquid::Tag
def initialize(tag_name, text, tokens)
super
end
def render(context)
site = context.registers[:site]
output = '<ul>'
site.pages.each do |page|
output += '<li><a href="'+page.url+'">'+page.title+'</a></li>'
end
output += '<ul>'
output
end
end
end
Liquid::Template.register_tag('nav_tree', Jekyll::NavTree)
而我通過{% nav_tree %}
插入到我的液體模板中。
問題是上述代碼中的page
變量沒有您期望的所有數據。 page.title
未定義,page.url
只是前面帶斜槓的基名(例如/a/b/c.html
,它只是給我/c.html
)。
我在做什麼錯?
附註:我已經試過用純液體標記做這個,最後我放棄了。我可以輕鬆地通過site.pages
迭代Liquid,但我無法找到適當嵌套列表的方法。
我創建了[GitHub上的一個問題](https://github.com/mojombo/jekyll/issues/548),看看有沒有人知道答案。 – jnrbsn 2012-04-30 16:21:35
你有沒有設法讓嵌套工作?我很想看到最終的代碼,如果是這樣的話 – bwest 2012-08-21 19:35:57
@Brand不幸的是,我從來沒有完成它。 – jnrbsn 2012-08-23 23:19:43