我已经建立了一个基于 Jekyll 代码的网站阿帕奇构建者 http://buildr.apache.org/。 Buildr 网站根据标题中的标题自动为每个页面生成一个目录。textile
格式文件。
例如,您使用纺织品编写一个页面,标记出标题,如下所示。 。
h2(#why). Why are we doing this?
BLah blah balh etc ..
h2(#something). Some other header
BLah blah balh etc ..
然后在默认的 HTML 中,您有一些代码将内容传输到名为toc
然后你把内容放在后面。例如 ...
<div id='content'>
<h1 id='{{ page.title | downcase | replace(' ', '_') }}'>{{ page.title }}</h1>
{{ content | toc }}
{{ content }}
</div>
在 Apache 站点上,他们得到了所需的结果(目录显示,后面跟着内容)。然而,在我的网站上,内容被渲染两次。不生成目录。
此外,如果我直接从 github 克隆 Apache Buildr 项目并运行jekyll --server
in the doc
该项目的文件夹,则也不会生成目录。
我缺少什么?
我向 Builder 开发人员邮件列表发送了电子邮件,有人告诉我看这里 https://github.com/apache/buildr/blob/trunk/rakelib/doc.rake寻求灵感。原来相关的代码片段是......
module TocFilter
def toc(input)
output = "<ol class=\"toc\">"
input.scan(/<(h2)(?:>|\s+(.*?)>)([^<]*)<\/\1\s*>/mi).each do |entry|
id = (entry[1][/^id=(['"])(.*)\1$/, 2] rescue nil)
title = entry[2].gsub(/<(\w*).*?>(.*?)<\/\1\s*>/m, '\2').strip
if id
output << %{<li><a href="##{id}">#{title}</a></li>}
else
output << %{<li>#{title}</li>}
end
end
output << '</ol>'
output
end
end
Liquid::Template.register_filter(TocFilter)
在站点的源文件夹中创建一个名为_plugins
然后将此代码粘贴到名为的文件中TocFilter.rb
在该文件夹中。
有用!!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)