我已经为
Apache Buildr的网站建立了一个基于Jekyll代码的网站.buildr网站根据纺织品格式文件中的标题自动生成每个页面的目录.
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站点上,他们获得了所需的结果(显示toc后跟内容).但是,在我的网站上,内容呈现两次.没有生成目录.
此外,如果我直接从github克隆Apache buildr项目并在该项目的doc文件夹中运行jekyll –server,那么也不会生成目录.
我错过了什么?
解决方法
我通过电子邮件发送了buildr开发人员邮件列表,有人告诉我
look here的灵感.原来相关的代码片段是……
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的文件中.
有用!!