2016-05-13 11 views
0

投稿用のアイテムをブログに追加するためのジェネレータプラグインを作成したいと思います。アイテムはブログインデックスに表示されるはずですが、ページに関連付けられているページはありません(クリックすることはできません)。ジキルのインデックスページへの投稿を.mdファイルなしで追加

私は

class QuoteGenerator < Generator 
    safe true 

    def generate(site) 
    # add a single post 
    site.posts << QuotePost.new(site, site.source, "Blub") 
    end 
end 

ようなものが必要知っている。しかし、私は理解していないことは、私のPostサブクラスを実装する方法です。

class QuotePost < Post 
    def initialize(site, base, title) 
    # Nooo, I don't want to create a .md file for this 
    name = "2016-05-13-test.md" 
    dir = "" 
    # (write out .md file here) 
    super(site, base, dir, name) 
    end 
end 

しかし、その後、私はほとんど最初の場所でプラグインを必要としないだろう:私は他のプラグイン(のようなthis one to embed Flickr photos)は、彼らが値下げ+ YAMLファイルにしたいデータを書き込み、その後、このファイルを参照することを発見しました。私はmarkdownファイルを自分で生成することができます(外部スクリプトを使用して)。

私がしたいのは、私のポストサブクラスにいくつかの変数を設定し、それらをブログインデックスのテンプレートで利用できるようにすることです。どうやってやるの?

+0

なぜ 'output:false'でコレクションを使用しないのですか?データはどこから来たのですか? –

答えて

0

通常の投稿はファイルベースなので、このケースはPostとは関係ないようです。コレクションが適しているかもしれませんが、コンテンツをどのように入手するかははっきりしません。あなたは(静的なJSON/CSVの/ etcファイルを経由してそれらを定義することができた場合

  1. 使用_data /各項目が必要なプロパティを持つオブジェクトのリストを設定するには:私は2つの主要なオプションをお勧めしたい

    外部データプロデューサとジキルの可視化を分離するために1回生成する)。

  2. 用途:pre_render hookとあなたは、コードを介してデータを定義する必要がある場合は、プラグイン -

また、あなたを完全に制御することができます2番目のパラメータとしてペイロードハッシュを受け取ることになりますあなたのフックレンダリング時に使用できる変数

変数をsite.dataにすると、アイテムを繰り返し処理したり、何かをレンダリングしたり、テンプレートを組み込んだりすることができます。また、サイトのデータに基づいて新しいページを生成するプラグインもあります。

適切な答えは、コンテンツの入手方法、必要なマークアップ、およびそのアイテムの使用方法によって異なります。

関連する問題