2

Web サイトを別のサイト ジェネレーターからDocPadに移動しており、 getBlock('meta')機能を理解しようとしています。getBlock ('scripts')getBlock('styles')を理解するのは非常に簡単でした。なぜなら、個々のリソースの場所を配列で.addメソッドに渡し、各場所が 1 つのスペースを占有するだけだったからです。一方、メタ タグの生成は、各タグに名前と値の 2 つのコンポーネントがあるため、もう少し複雑にする必要があるようです。

私の質問は、メタ タグの名前と値をgetBlock('meta').add()に渡して、メタ タグを作成する方法を教えてください。

また、getBlock('meta')がデフォルトでタグを作成することに気付きました:

<meta http-equiv="X-Powered-By" content="DocPad"/>

マークアップに含めたくない。私は素晴らしい DocPad プロジェクトの帰属に賛成ですが、別の方法で、別の場所でそれを行うことを好みます。そのタグが生成されないようにするにはどうすればよいですか?

ありがとうございました。

4

4 に答える 4

2

@przemo_li と @Rafael Epplee は正しいです。標準インストールでは、docpad 構成オプションを介してその Powered-by メタ要素をオプションにするプル リクエストを送信する時間があれば、メタ ブロックはそれのみを出力します。受け入れ。

ただし、その要点は、そのpowered-by要素を出力することだけではなく、プラグインが独自のメタデータを挿入できるようにすることです-そうするプラグインはまだ知りませんが、素晴らしい例は@Rafael の例 - ドキュメントのメタ データを介してメタ要素を定義し、プラグインを使用してそれらをメタ ブロックに挿入し、ページ固有のメタ データを簡単に作成できるようにします。もう 1 つの例は、標準の utf8 エンコーディングを常に使用するレイアウトではなく、ドキュメントのエンコーディングに応じて適切に charset/encoding メタ要素を挿入することです。

そのため、現在はそれほど有用ではありませんが、プラグインで必要になる日が来るかもしれません。

于 2013-03-12T22:03:23.243 に答える
1

docpadはに与えられた引数に対して何もしないように私には思えますgetBlock('meta').add()。ソースを確認しましたが、他のブロックはすべてadd()でブロック固有のHTMLを生成しますが、メタブロックは生成しません。

私の推測では、docpadはドキュメントからメタデータを自動的に収集し、他の方法でメタブロックに挿入します。

現時点では、メタデータをサイトに追加する唯一の方法は、ドキュメントまたはdocpad.coffeeファイルを使用することだと思います。

于 2013-03-08T13:59:35.773 に答える
1

忘れてよ。

独自のメタを手書きします。あなたのレイアウトで。

ページ固有のメタが必要ない限り、問題ありません。

また、必要に応じて、DocPad のソース コードをいつでも変更できます。

于 2013-02-08T21:31:30.043 に答える
0

私の回答はかなり遅れていますが、現時点で Docpad は v6.78.4 であり、必要なイベントにフックする手段を提供しています。

まず、Docpadメタは、驚くほど問題のない MetaCollection です。これは基本的に、項目を.toHTML()文字列に結合するメソッドを備えた項目の配列です。ブロックと呼ばれるのは、他の場所で変更できる別の構造に存在し、 や などの個別のメソッドのセットがあるためですgetBlock()setBlock()

イベントは、ユーザー コードをトリガーできる定義済みのポイントです。コンテンツが生成される前に設定されるように、メタに generateBefore を使用することをお勧めします。

# Define the DocPad Configuration
docpadConfig = {
    # ...
    events:
        generateBefore: () ->
            @docpad.getBlock('meta').add('<meta name="viewport" content="width=device-width,initial-scale=1"/>')
}

2番目の懸念については、メタgenerator(質問ではX-Powered-Byだったと思います)が条件付きで追加されますDocPad.prototype.resetCollections

if (docpad.getConfig().poweredByDocPad !== false) {
    meta.add("<meta name=\"generator\" content=\"DocPad v" + (docpad.getVersion()) + "\" />");
}

poweredByDocPad: falseファイルに aを追加することで無効にできdocpad.coffeeます。

于 2016-02-14T22:12:39.123 に答える