4

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

假设可以这样做:

# main.njk

<head>
 <title>{{ title }}</title>
</head>
# page.njk
---
layout: main.njk
pagination:
    data: projects
    size: 1
    alias: project
permalink: "work/{{ project.title | slug }}/"
title: {{ project.title }}

可能误解了一些基本原理,但{{ title }}结果却[object, object]相反。永久链接工作正常...

4

3 回答 3

4

现在eleventyComputed可以使用

# main.njk
<head>
 <title>{{ title }}</title>
</head>
# page.njk
---
layout: main.njk
pagination:
    data: projects
    size: 1
    alias: project
permalink: "work/{{ project.title | slug }}/"
eleventyComputed:
    title: "{{ project.title }}"
于 2021-02-23T17:22:40.803 回答
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>
# page.njk
---
layout: main.njk
pagination:
    data: projects
    size: 1
    alias: project
permalink: "work/{{ project.title | slug }}/"
---
# other_page.njk
---
layout: main.njk
title: Other Page
---
# projects.json
[
    {
        "title": "Project 1"
    },
    {
        "title": "Project 2"
    }
]

输出:

# work/project-1/
<head>
 <title>Project 1</title>
</head>
# work/project-2/
<head>
 <title>Project 2</title>
</head>
# other-page/
<head>
 <title>Other Page</title>
</head>
于 2020-07-06T21:33:30.347 回答
0

njk文件中,您通常不能在 frontmatter 中使用数据变量或模板语法。

永久链接变量是一个例外。

请参阅有关的官方 Eleventy 文档permalink


要解决您的问题,您可以:

  • 硬编码你titlepage.njk
  • 使用 javascript.11ty.js模板文件来替换page.njkmain.njk,或作为main.njk.

.11ty.js文件通常可以在 frontmatter 中使用数据变量。

例如,.11ty.js在 frontmatter 中有一个变量的文件:

let thing = "whatever";

class Sample {
    data() {// data() is the .11ty.js equivalent of frontmatter
        return {
        myCustomFrontmatterVariable: thing,
        };
    }
    render(data){
        return data.content;
    }
}

module.exports = Sample;
于 2020-04-11T08:09:39.127 回答