20

私は Jekyll でブログを再構築しようとしていますが、簡単な作業に失敗しました。

次の一連のテンプレートがあるとします。

default.html:

{{ head }}

{{ content }}

frontpage.html:

---
layout: default
---

{% capture head %}
  Frontpage
{% end %}

{{ content }}

index.html:

---
layout: frontpage
---

Other stuff

{% capture head %}私はそれが変数をレイアウトに渡すことを期待していました。しかし、Front Matter の変数のみが実際に として渡されているようpage.variable_nameです。

capture-d var を Jekyll のレイアウトに渡す方法はありますか?

と の 2 つの異なるレイアウトを作成でき、レイアウト内のブロック全体を置き換えることができるfrontpageと思います。しかし、それはhtmlの2倍のようなものなので、可能であれば解決したいと思います。normal_page{{head}}{{content}}capture

4

2 に答える 2

6

あなたのユース ケースが私のようなもので、テンプレート内に追加コンテンツを含めたい場合は、YAML のブロック スカラー機能を使用して、フロント マターから複数行のコンテンツをテンプレートに含めることができます。a|は改行を保持し、 a は改行を>削除 (「折り畳み」) します。(ブロック標識の後にはブランク行が続く必要があることに注意してください。)

index.html

---
layout: default
head: |
  <link href="//cdn-images.mailchimp.com/embedcode/classic-081711.css" rel="stylesheet" type="text/css">
  <style type="text/css">
    #mc_embed_signup{background:#fff; clear:left; font:14px Helvetica,Arial,sans-serif; }
  </style>
script: |
  <script type='text/javascript' src='//s3.amazonaws.com/downloads.mailchimp.com/js/mc-validate.js'></script>
  <script type='text/javascript'>(function($) {window.fnames = new Array(); window.ftypes = new Array();fnames[0]='EMAIL';ftypes[0]='email';fnames[1]='FNAME';ftypes[1]='text';fnames[2]='LNAME';ftypes[2]='text';fnames[3]='PHONE';ftypes[3]='phone';fnames[4]='ORG';ftypes[4]='text';fnames[5]='MMERGE5';ftypes[5]='text';}(jQuery));var $mcj = jQuery.noConflict(true);</script>
---
<!-- Content, maybe a MailChimp signup form? -->

default.html

<!DOCTYPE html>
<html>
<head>
  <title>
    {{page.title}}
  </title>
  <link rel="stylesheet" type="text/css" href="/css/main.css">

  <!-- here you can have add'l arbitrary head content -->
  {{ page.head }}
</head>
<body>
  {{content}}

  <script>
    // Google Analytics, perhaps?
  </script>

  <!-- here you can have add'l arbitrary content at the end of the page, good for scripts -->
  {{page.script}}
</body>
</html>
于 2014-11-10T02:35:57.970 に答える