我正在尝试为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