Ele*_*ley 4 javascript yaml-front-matter eleventy
我正在将此入门项目改编为我自己的博客。我指的是这个 Eleventy 文档 来获取帖子摘录。
我首先编辑我的.eleventy.js以启用灰质摘录,根据上述文档,如下所示:
module.exports = function(eleventyConfig) {
eleventyConfig.addPlugin(pluginRss);
eleventyConfig.addPlugin(pluginSyntaxHighlight);
eleventyConfig.addPlugin(pluginNavigation);
eleventyConfig.setDataDeepMerge(true);
eleventyConfig.setFrontMatterParsingOptions({ excerpt: true
});
/* file continues below */
Run Code Online (Sandbox Code Playgroud)
接下来,根据示例,我在一些博客文章的第一段之后添加了“---”。
最后,我更新了/_includes/postslist.njk以包含对每个帖子的摘录的引用,因此我的新文件现在显示为:
<ol reversed class="postlist" style="counter-reset: start-from {{ (postslistCounter or postslist.length) + 1 }}">
{% for post in postslist | reverse %}
<li class="postlist-item{% if post.url == url %} postlist-item-active{% endif %}">
<a href="{{ post.url | url }}" class="postlist-link">{% if post.data.title %}{{ post.data.title }}{% else %}<code>{{ post.url }}</code>{% endif %}</a>
<time class="postlist-date" datetime="{{ post.date | htmlDateString }}">{{ post.date | htmlDateString }}</time>
{% for tag in post.data.tags %}
{%- if collections.tagList.indexOf(tag) != -1 -%}
{% set tagUrl %}/tags/{{ tag }}/{% endset %}
<a href="{{ tagUrl | url }}" class="tag">{{ tag }}</a>
{%- endif -%}
{% endfor %}
{%- if post.excerpt -%}
<p>{{ post.excerpt }}</p>
{%- endif -%}
</li>
{% endfor %}
</ol>
Run Code Online (Sandbox Code Playgroud)
但没有摘录出现。
我检查了输出 HTML 中的空段落标记,但它们不存在,因此if
条件本身失败。
我尝试将摘录分隔符设置为默认“---”以外的其他内容,结果相同。
重要的是,我尝试禁用.eleventy.js中的摘录,这会导致分隔符被视为常规降价。这很重要,因为它表明灰质正确地将博客文章中的分隔符读取为分隔符,因此问题一定出在我的 /_includes/postslist.njk 中。
我如何引用 Eleventy 从灰质中生成的摘录?
(PS:我没有足够的声誉来为gray-matternpm 包创建 StackOverflow 标签,但恕我直言,如果有人想这样做,这不是一个坏主意。我已经用 yaml-front-matter 标记了它,它并非完全不准确,但据我所知,我的问题非常特定于gray-matteryaml 前端问题的方言。)
根据文档,110 使摘录在page变量下可用(请参阅Eleventy 提供的数据),而不是作为集合项的“顶级”属性。该page变量是data集合项对象的一部分。如果您使用post.data.page.excerpt而不是post.excerpt它会按预期工作:
{%- if post.data.page.excerpt -%}
<p>{{ post.data.page.excerpt }}</p>
{%- endif -%}
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用excerpt_alias 选项使摘录可用作顶级属性。使用此配置,您的模板将按原样工作:
eleventyConfig.setFrontMatterParsingOptions({
excerpt: true,
excerpt_alias: 'excerpt',
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
438 次 |
| 最近记录: |