Jekyll 无法在 Post 上显示 Post 图片
Jekyll Can't Get Post Image to Show on Post
在我的前面,我有:
图片:SNKRS.jpeg
在我的 post 布局中,我有:
---
layout: "wrapper"
---
<section class="postlayout">
<div class="postsummary">
<h1>{{ page.title }}</h1>
<p>{{ page.description }}</p>
{% if post.image %}
<img src="{{ site.baseurl }}/assets/blogimages/{{ post.image }}" alt="{{ site.baseurl }}{{ post.title }}"">
{% endif %}
</div>
</section>
<section class="postbody">
{{content}}
{% include lazyload.html %}
</section>
但是在 post 上,图像没有被拉取。只有当我在代码周围有 {% for post in site.posts %} 时,它才会拉动。但是当我使用它时,它会拉取网站上的所有 post 而不仅仅是当前的 post.
如果您的目标是从 post 的 Front Matter 获取图像,此代码可能会对您有所帮助。
布局post文件:..\_layouts\post.html
<section class="postlayout">
<div class="postsummary">
<h1>{{ page.title }}</h1>
<p>{{ page.description }}</p>
{% if page.image %}
<img src="{{ page.image }}" alt="{{ page.title }}"">
{% endif %}
</div>
</section>
注意:记得将此信息添加到 post 的 Front Matter。
Markdown post 文件:2020-05-12-my-post.md
---
title: "I'm the title of Post."
description: "I'm the description of the post."
image: /assets/blogimages/name_of_image.jpg
---
更好理解(回复后添加)。
为什么我使用 page.image
而不是 post.image
?
因为在您问题中 post 的示例中,您将 .html
或 .md
文件视为页面,而不是 post。
page.image
的变量 page
是官方的 Jekyll 变量。
虽然 post.image
的变量 post
不是官方的 Jekyll 变量,因此它不存在,除非明确声明
(这里有更多信息:Jekyll Variables)
阅读下文以了解。
如果你使用变量 page.image
Jekyll 从页面的 Front Matter 中获取变量 image
中的内容(默认情况下页面是一个文件 page-name.html
包含在Jekyll 项目的根目录)。请注意,此处 .html
文件因此被视为一个页面。您还可以使用 page-name.md
文件创建一个页面,以利用 MarkDown 语法的优势,但是您应该将其与可以 blog.html
适当放置在 [=30= 中的布局相关联]目录。
如果你想把一个YY-MM-DD-post-name.md
文件当作一个post,你必须先把文件插入到Jekyll项目的_posts
目录中。然后,您将必须创建一个页面(或布局),例如 blog.html
,其中包含用于列出所有现有 post 的代码。为此,您需要创建一个循环来迭代 _posts
文件夹中的每个 .md
文件。
下面的代码就是一个典型的例子:
<ul>
{% for post in site.posts %}
<li>
<h2><a href="{{ post.url }}">{{ post.title }}</a></h2>
<img src="{{ post.image }}" alt="{{ post.title }}">
</li>
{% endfor %}
</ul>
在第二行中,变量 post
将包含每个单曲的 Front Matter 中存在的值 post。从这里我们了解到 site.posts
被视为 array
并且我们需要 for
循环来访问 array
的每个元素。
因此使用 for
循环我们可以通过 post.title
变量访问 post 的标题或通过 post.image
变量访问图像。
不使用for
循环,我们也可以通过指定array
中每个元素的位置来访问array
的值,如下例:
<h2>{{ site.posts[0].title }}</h2>
<img src="{{ site.posts[0].image }}" >
在上面的示例中,我们访问了 array
位置 0 中的元素,但显然这是一个没有利用 for
循环功能的无用方法。
更多信息在这里:Jekyll List posts
在我的前面,我有:
图片:SNKRS.jpeg
在我的 post 布局中,我有:
---
layout: "wrapper"
---
<section class="postlayout">
<div class="postsummary">
<h1>{{ page.title }}</h1>
<p>{{ page.description }}</p>
{% if post.image %}
<img src="{{ site.baseurl }}/assets/blogimages/{{ post.image }}" alt="{{ site.baseurl }}{{ post.title }}"">
{% endif %}
</div>
</section>
<section class="postbody">
{{content}}
{% include lazyload.html %}
</section>
但是在 post 上,图像没有被拉取。只有当我在代码周围有 {% for post in site.posts %} 时,它才会拉动。但是当我使用它时,它会拉取网站上的所有 post 而不仅仅是当前的 post.
如果您的目标是从 post 的 Front Matter 获取图像,此代码可能会对您有所帮助。
布局post文件:..\_layouts\post.html
<section class="postlayout">
<div class="postsummary">
<h1>{{ page.title }}</h1>
<p>{{ page.description }}</p>
{% if page.image %}
<img src="{{ page.image }}" alt="{{ page.title }}"">
{% endif %}
</div>
</section>
注意:记得将此信息添加到 post 的 Front Matter。
Markdown post 文件:2020-05-12-my-post.md
---
title: "I'm the title of Post."
description: "I'm the description of the post."
image: /assets/blogimages/name_of_image.jpg
---
更好理解(回复后添加)。
为什么我使用 page.image
而不是 post.image
?
因为在您问题中 post 的示例中,您将 .html
或 .md
文件视为页面,而不是 post。
page.image
的变量 page
是官方的 Jekyll 变量。
虽然 post.image
的变量 post
不是官方的 Jekyll 变量,因此它不存在,除非明确声明
(这里有更多信息:Jekyll Variables)
阅读下文以了解。
如果你使用变量 page.image
Jekyll 从页面的 Front Matter 中获取变量 image
中的内容(默认情况下页面是一个文件 page-name.html
包含在Jekyll 项目的根目录)。请注意,此处 .html
文件因此被视为一个页面。您还可以使用 page-name.md
文件创建一个页面,以利用 MarkDown 语法的优势,但是您应该将其与可以 blog.html
适当放置在 [=30= 中的布局相关联]目录。
如果你想把一个YY-MM-DD-post-name.md
文件当作一个post,你必须先把文件插入到Jekyll项目的_posts
目录中。然后,您将必须创建一个页面(或布局),例如 blog.html
,其中包含用于列出所有现有 post 的代码。为此,您需要创建一个循环来迭代 _posts
文件夹中的每个 .md
文件。
下面的代码就是一个典型的例子:
<ul>
{% for post in site.posts %}
<li>
<h2><a href="{{ post.url }}">{{ post.title }}</a></h2>
<img src="{{ post.image }}" alt="{{ post.title }}">
</li>
{% endfor %}
</ul>
在第二行中,变量 post
将包含每个单曲的 Front Matter 中存在的值 post。从这里我们了解到 site.posts
被视为 array
并且我们需要 for
循环来访问 array
的每个元素。
因此使用 for
循环我们可以通过 post.title
变量访问 post 的标题或通过 post.image
变量访问图像。
不使用for
循环,我们也可以通过指定array
中每个元素的位置来访问array
的值,如下例:
<h2>{{ site.posts[0].title }}</h2>
<img src="{{ site.posts[0].image }}" >
在上面的示例中,我们访问了 array
位置 0 中的元素,但显然这是一个没有利用 for
循环功能的无用方法。
更多信息在这里:Jekyll List posts