0

Jekyllのページの URL を取得する方法はありますか? about.htmlページとdownload.htmlは、次の階層のような非ポスト テキスタイル ファイルを意味します。

root
 |
 +- _includes
 |
 +- _layouts
 |
 +- _posts
 |
 +- _config.yml
 |
 +- index.textile
 |
 +- about.textile
 |
 `- download.textile

私はこのようなことをしたいと思います:

<h1><a href="{{ page.url }}">{{ page.title }}</a></h1>

投稿の to_liquid メソッドに URL が含まれているため、これは投稿で機能します。一方、ページにはそのようなものは含まれていないようです-それらには必要なプロパティがあります(またはそう思われます)が、それらをエクスポートしませんto_liquid; そのように再定義したいと思います。これを行う方法はありますか?

jekyll_extensionsを見つけましたが、ターゲット環境 (github ページ) で動作するかどうかわかりません。

可能であれば、すべての yaml ヘッドに url パラメーターを含める必要は避けたいと思います。

どうもありがとう!

4

3 に答える 3

3

答えはノーだと思います。グローバル項目の内容に関するJekyll wikiは次のとおりです。page

投稿の場合、これは YAML Front Matter のデータと計算されたデータ (URL や日付など) の和集合です。通常のページの場合、これは単なる YAML Front Matter です。

Jekyll のエンジンをローカルで実行するように再構成できたとしても、Github のページでそれをどのように機能させることができるかわかりません (彼らはあなたのページではなくバニラの Jekyll を使用するため)。

于 2010-05-28T11:41:31.527 に答える
3

新しいプラグイン システムを介して、jekyll クラスにモンキーパッチを適用できるようになりました。

このファイル (page.rb) を _plugins ディレクトリに追加するだけです:

module Jekyll
  class Page
    def to_liquid
      self.data.deep_merge({
        "url" => File.join(@dir, self.url),
        "content" => self.content,
        "dir" => self.dir,
        "name" => self.name,
        "ext" => self.ext,
        "basename" => self.basename
      })
    end
  end
end

ここで変更しただけto_liquidですが、メソッドなどを追加することもできました。

于 2010-06-26T15:29:40.940 に答える
1

page.rb to_liquid が必要な「url」データをサポートするようになりました...

https://github.com/mojombo/jekyll/blob/master/lib/jekyll/page.rb

于 2011-02-06T05:49:24.200 に答える