十一 (11ty) 数据分页 - 数据标题

ebi*_*461 10 pagination nunjucks yaml-front-matter eleventy

尝试使用数据设置分页,其中{{ title }}in是projects.json中定义的当前<head><title>{{ title }}</title></head>页面的标题

假设可以这样做:

# main.njk

<head>
 <title>{{ title }}</title>
</head>
Run Code Online (Sandbox Code Playgroud)
# page.njk
---
layout: main.njk
pagination:
    data: projects
    size: 1
    alias: project
permalink: "work/{{ project.title | slug }}/"
title: {{ project.title }}
Run Code Online (Sandbox Code Playgroud)

可能误解了一些基本原理,但{{ title }}结果却是[object, object]这样。固定链接工作正常...

Dee*_*pta 10

现在eleventyComputed可以使用了

# main.njk
<head>
 <title>{{ title }}</title>
</head>
Run Code Online (Sandbox Code Playgroud)
# page.njk
---
layout: main.njk
pagination:
    data: projects
    size: 1
    alias: project
permalink: "work/{{ project.title | slug }}/"
eleventyComputed:
    title: "{{ project.title }}"
Run Code Online (Sandbox Code Playgroud)


ebi*_*461 2

{{ project.title }}实际上可以在主模板中访问项目标题main.njk,就像在 中为该项目定义的任何其他项目数据一样projects.json

对于任何其他页面(未在 中定义为对象projects.json),可以使用条件语句:

<title>{{ project.title if project.title else title}}</title>

以便:

# main.njk

<head>
 <title>{{ project.title if project.title else title}}</title>
</head>
Run Code Online (Sandbox Code Playgroud)
# page.njk
---
layout: main.njk
pagination:
    data: projects
    size: 1
    alias: project
permalink: "work/{{ project.title | slug }}/"
---
Run Code Online (Sandbox Code Playgroud)
# other_page.njk
---
layout: main.njk
title: Other Page
---
Run Code Online (Sandbox Code Playgroud)
# projects.json
[
    {
        "title": "Project 1"
    },
    {
        "title": "Project 2"
    }
]
Run Code Online (Sandbox Code Playgroud)

输出:

# work/project-1/
<head>
 <title>Project 1</title>
</head>
Run Code Online (Sandbox Code Playgroud)
# work/project-2/
<head>
 <title>Project 2</title>
</head>
Run Code Online (Sandbox Code Playgroud)
# other-page/
<head>
 <title>Other Page</title>
</head>
Run Code Online (Sandbox Code Playgroud)