Jekyll用のカスタムタグプラグインを作成しようとしていますが、これはサイト上のすべてのページ(投稿ではない)の階層ナビゲーションツリーを出力します。私は基本的に束を入れたいと思っています.のリンクは、特定のCSSクラスが指摘している現在のページのページへのリンク(リンクテキストとしてのページタイトル付き)を持っています。Jekyllプラグインからページデータを取得できません
私は非常にルビーに慣れていません。私はPHPの男です。
私は、すべてのページを繰り返して、少なくともそれを行うことができるかどうかを確認するために1次元のリストを出力することから始めたいと考えました。
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
あなたはネスティングが機能するように管理しましたか?もし私が最終的なコードを見たいと思っていたら – bwest
@Brand残念ながら、私はそれを仕上げることはなかった。 – jnrbsn