5

ApacheBuildrのWebサイトのJekyllコードに基づいてWebサイトを構築しました。textileBuildr Webサイトは、フォーマットファイルのヘッダーに基づいて、各ページの目次を自動的に生成します。

たとえば、そのように見出しをマークアウトするテキスタイルを使用してページを作成します。。

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の後にコンテンツが表示されます)。しかし、私のサイトでは、コンテンツが2回レンダリングされています。目次は生成されません。

さらに、Apache Buildrプロジェクトをgithubから直接複製し、そのプロジェクトjekyll --serverdocフォルダーで実行すると、目次も生成されません。

私は何が欠けていますか?

4

4 に答える 4

4

私はBuildr開発者のメーリングリストに電子メールを送りました、そして誰かが私にインスピレーションを得るためにここを探すように言いました。関連するコードスニペットは...

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ます。

できます!!

于 2012-11-28T19:53:12.263 に答える
2

tocはどこで定義されていますか?標準の液体フィルターまたはjekyll拡張機能のいずれかとしてリストされていないため、プラグインが欠落している可能性があります。

于 2012-11-21T12:14:01.917 に答える
1

Jekyllを利用したGithubブログでghiculescuのJSTOCを使用しました。それは非常にうまく機能します。

于 2013-07-14T10:17:13.717 に答える
1

jekyll-tocプラグインは箱から出してあなたのためにこれを行います。

以下を追加してくださいGemFile

gem 'jekyll-toc'

以下を追加してください_config.yml

plugins:
  - jekyll-toc

TOCを生成する場所に次の液体タグを追加します。

{{ content | toc_only }}

そして最後toc: trueにあなたの投稿に設定しますfront-matter

_config.ymlTOCがデフォルトですべての投稿に適用されるように、この値をデフォルトとして追加しました。

于 2018-01-19T23:04:31.130 に答える