あなたの場合、レンダリングされた.MDファイルを表示するために呼び出されるテンプレートはフロントマターパラメータにアクセスでき、テンプレートの動作を変更することもできます(追加クラス<div>
の追加など)パラメータ。
---
title: "Post about the front matter"
<more key pairs>
nointro: false
---
キーnointro: true
が私の最初の段落は、通常のサイズであることをするだろう:私は私の.md
ファイルの例
、。それ以外の場合、キーが存在しないかfalse
である場合、最初の段落はより大きなフォントサイズで表示されます。技術的には、<div>
にカスタムクラスを追加しています。テンプレートで
、私はカスタムパラメータnointro
にこの方法をタップする:前付パラメータを持っているあなたの値下げファイルを示し
親テンプレート、:私はできません
<div class="article-body {{ if .Params.nointro }} no_intro {{ end }}">
{{ .Content }}
</div><!-- .article-body -->
お知らせ変数を{{ .Content }}
に入れてください。ただし、はの外に置くことができます。
これはファイルの内容の一部です(hugo/themes/highlighter/layouts/partials/blog-single-content.html
).1つの投稿のコンテンツの一部です。あなたはあなたが好きなようにあなたの部分を手配することができます。
もちろん、それはBooleanパラメータフラグだが、同じように、それはあなたが直接使用することができ、コンテンツのようになります。トップ
MDファイルの:
---
title: "One of our clients"
<more key pairs>
companyname: "Code and Send Ltd"
---
Text content is put here.
その後、に対してこの(余分な保険のようにそれを参照します使用してブランク値IF
):ヒューゴテンプレートファイルAnywhereの
:
{{ if .Params.companyname }}{{ .Params.companyname }}{{ end }}
2.設定を使用する。
今、あなたの例を見て、ほとんどよりグローバルな場所にカスタムフィールドを保証するだろう "このサイトはによって運営され、"(toml/YAML/JSON)、例えば、hugo/config.toml
です。
hugo/config.toml
::私は私のconfig
にcompanyname
を追加したい場合は、私はこの方法でそれを行うだろう
BaseURL = "_%%WWWPATH%%_"
languageCode = "en-uk"
title = "Code and Send"
pygmentsUseClasses = true
author = "Roy Reveltas"
theme = "Highlighter"
[params]
companyname = ""
それから私は{{ .Site.Params.headercommentblock }}
経由でどこでもそれを使うだろう。
クライアントのページをstatic pagesにしたい場合は、単一の場所が最適ではない可能性がありますし、フロントマターを利用したいと思うかもしれません。それ以外の場合は、サイトのフッターの場合は、この方法が優れています。あるいは、このデータをdata filesに配置することもできます。
3.カスタムプレースホルダを使用し、ガルプ/ NPMスクリプト経由
を交換し、私は*ことはできないと述べたが、型にはまらない、より危険なものの、それは、可能です。
自分のウェブサイトに2つのビルドが必要な場合は、1)Prod
と2)Dev
のような設定でした。 Prod
URLは2つの場所から来ていました:CDNと私のサーバー。 Dev
は静的フォルダ内の1か所から来なければなりませんでした。なぜなら、画像を見たいと思っていて、列車でオフラインで作業していたからです。
解決するために、すべてのテンプレート(マークダウンコンテンツを含む)に_%%WWWPATH%%_
と_%%CDNPATH%%_
という2つのカスタム変数を使用しました。私は途中でこの独特のパターンを考え出し、自由にそれを適応させてください。
hugo/config.toml
:その後、私のようにhugo/config.toml
にもそれを置く
:
BaseURL = "_%%WWWPATH%%_"
ヒューゴは喜んでこれらのプレースホルダを持つウェブサイトを生成した後、私はHTMLの使用兵卒タスクを締めくくっ平凡なファイル:
replace: {
dev: {
options: {
patterns: [{
match: /_%%CDNPATH%%_+/g,
replacement: function() {
return 'http://127.0.0.1:1313/'
}
}, {
match: /_%%WWWPATH%%_+/g,
replacement: function() {
return 'http://127.0.0.1:1313/'
}
}...
私はGulpやnpmのスクリプトを勧めます。私はGruntを避けるでしょう。これはGruntが最高の時代の私の古いコード例です。
あなたがプレースホルダの値が見つからないか、間違ったことが起こり、プレースホルダがプロダクションコードにこぼれてしまった場合、Hugoはエラーにならないので、Hugo params
より危険です。
キャッチネットの複数のレイヤーを追加する必要があります.Gulp/Grunt/npmの単純なスクリプトステップから、プリコミットフックのプレースホルダーパターンを検索します。特定のパターンを持つコード(たとえば、%%_
)。あなたのレポの
package.json
:例えば、非常に基本的なレベルでは、あなたがこの方法をコミット許可する前に何を検索するためのHusky
を命令する
"scripts": {
"no-spilled-placeholders": "echo \"\n\\033[0;93m* Checking for spilled placeholders:\\033[0m\"; grep -q -r \"%%_\" dist/ && echo \"Placeholders found! Stopping.\n\" && exit 1 || echo \"All OK.\n\"",
"precommit": "npm run no-spilled-placeholders"
},
基本的には、パターン%%_
と出口とのためgrep
エラーコードが見つかった場合。それがJSONなので、コードをエスケープすることを忘れないでください。私はプロダクションで同様の(より高度な)セットアップを使用しています。適切なセットアップでは、%_
、_%
、%__
、__%
などを含む、間違ってタイプされたものを創造的に探す必要があります。
Hmm OK私はトークンを追加して、世代をsedで置き換えることができたと思います。それは私の唯一の選択肢ですが、残念です。とにかくありがとう。 – jbrown