如何将过滤器写入nanoc,以便在每个标头之后将引用添加到目录

我正在尝试创建一个过滤器,该过滤器在每个h2标题之后添加对TOC的引用。

这是我做过的,但是不起作用,并且每次我修改代码时,所有相关页面都不会重新编译。

{项目目录} /规则:

compile '/**/*.md' do
  filter :kramdown
  layout '/default.*'
  filter :add_ref_to_toc
  filter :add_toc_french
  write item.identifier.without_ext + '/index.html'
end

{项目目录} /lib/filters/add_ref_to_toc.rb:

require 'nokogiri'
class AddRefToTocFilter < Nanoc::Filter

  identifier :add_ref_to_toc

  def run(content,params={})    
    doc = Nokogiri::HTML.fragment(content)
    doc.css('#contents h2') do |header|
      header.add_next_sibling "<br/><a href='#toccontent'>Aller à la table des matières</a><br/><br/>"
    end
    doc.to_s
  end

end

处理后的页面:

<div id="contents">
<h2>title 1</h2>
<br/><a href='#toccontent'>Aller à la table des matières</a><br/><br/>

<h2>title 2</h2>
<br/><a href='#toccontent'>Aller à la table des matières</a><br/><br/>

<h2>title 3</h2>
<br/><a href='#toccontent'>Aller à la table des matières</a><br/><br/>
</div>
renchao568 回答:如何将过滤器写入nanoc,以便在每个标头之后将引用添加到目录

这是有效的代码。

require 'nokogiri'
class AddRefToTocFilter < Nanoc::Filter

  identifier :add_ref_to_toc

  def run(content,params={})    
    doc = Nokogiri::HTML(content)
    headers = doc.css('#contents h2')
    headers.each do |header|
      header.add_next_sibling(Nokogiri::HTML.fragment("<br/><a href='#toccontent'>&#124;Aller à la table des matières&#124;</a><br/><br/>"))
    end
    doc.to_s
  end

end
本文链接:https://www.f2er.com/3130950.html

大家都在问