5

これは私を困惑させました...

1 つのファイルの YAML ハッシュを他のいくつかの Jekyll ページで共有したいと考えています。

私はあなたがそれをFront Matterに入れることができることを知っています(それはそれを複製する必要があります)、そしてあなたがプラグインを介してページを生成(書く)ことができることを知っています(しかし私は複雑になるいくつかの異なるタイプのページでそれを使用しています)。どちらも私が探しているものではありません。

自分のページで Liquid を使用してハッシュをループしたいのですが、プラグインから Liquid へのハッシュを取得できないようです。{% capture %}は文字列でのみ機能し、独自の Liquid タグがある場所の{% assign %}ように、それ自体でタグを呼び出すことはできません。{% assign projects = gethash %}gethash

基本的には別のYAMLファイルをテキストベースのデータベースのように使いたいです。

YAML ファイルには次のものが含まれています。

projects:

  category1:
     -
       title: Project 1
       desc: Description
       etc...
     -
       title: Project 2
       etc...

    category2:
     -
       title: Project 3
       desc: Description
       etc...
     -
       title: Project 4
       etc...

プラグインが呼び出しています (YAML の Ruby ハッシュを提供します):

def...
  YAML::load(File.read('projects.yml'))
end...

テンプレートでは、次のことを行います。

{% for p in projects %}
  ...

これは非常に単純なはずですが、Liquid の厄介な問題の 1 つです。

{% for %}ループで使用するプラグインから Liquid にハッシュを取得するにはどうすればよいですか?

4

2 に答える 2

0

プラグインにする必要がない場合は、_config.yml. siteプラグインの場合、変数にハッシュを追加する必要がある場合があります。

発電機で十分だと思います。プラグインに関するページがあります。

これは私が使用するものです(現在テストできないため、間違っている可能性があります!):

module Jekyll
  class ProjectsGenerator < Generator
    safe true

    def generate(site)
      # This probably won't work.
      site.projects = YAML::load(File.read('projects.yml'))
    end
  end
end

とにかく、余分な複雑さ(別のファイルを用意する、あなたのためだけに新しいプラグインを作成するなど)が必要ない場合は、データを_config.yml. シンプルさが良いです。

それが役立つことを願っています。:)

于 2013-08-27T21:45:19.540 に答える