Jekyll + NetlifyCMS 集合小部件
Jekyll + NetlifyCMS collection widget
我对 Jekyll + NetlifyCMS 有疑问。我想创建 relation widget。我无法使用以下代码在相关小部件中搜索我的作者。我做错了什么?
#config.yml
collections:
authors:
output: true
#_authors/jill.md
---
short_name: jill
name: Jill Smith
position: Chief Editor
---
Lorem ipsum
#admin/config.yml
- name: "pages"
label: "Pages"
files:
- label: 'Homepage'
name: 'homepage'
file: 'pages/homepage.md'
fields:
- label: "Choose author"
name: "author"
widget: "relation"
collection: "authors"
value_field: "short_name"
search_fields: ["name", "short_name"]
我 运行 遇到了完全相同的问题,我需要更多地了解它的实际工作原理以及如何在 Netlify CMS 中更好地引用 Jekyll 页面变量,但我得到了一个可行的解决方案我将适应您的用例。
首先,添加 display_fields
对象,以便用户可以看到他们正在选择哪个作者。这可能是您的问题,因为 docs 概述了它是必需的 属性。我将值字段更改为 {{slug}},因为我们将看到稍后引用该字段将是一种万无一失的方法。此外,我将作者添加到 CMS 配置中,因为我在关系字段中有我引用的集合。我不确定它是否也能起到作用,但是嘿,它不会造成伤害:
#admin/config.yml
- name: "authors"
create: true
folder: "_authors/"
fields:
- label: 'Title'
name: 'title'
widget: 'string'
- label: 'Position'
name: 'position'
widget: 'string'
- name: "pages"
label: "Pages"
files:
- label: 'Homepage'
name: 'homepage'
file: 'pages/homepage.md'
fields:
- label: "Choose author"
name: "author"
widget: "relation"
collection: "authors"
value_field: "{{slug}}"
search_fields: ["name", "short_name"]
display_fields: ["name"]
您可以保留 short_name
作为将提交给主页作者 属性 的值字段,但我将向您展示一种让内容编辑者添加作者和通过 Netlify 将它们应用到带有 slug property. You can customize the slug or just let Jekyll create it by default. I haven't figured out how to access any of the page variables 的页面,而不是首先在 Netlify CMS 中定义它们,但是 slug 在创建时用作集合项的文件名,我可以通过 CMS 配置在本地引用它。
#layouts/home.html
---
title: Home
author: jill
---
<div class="author">
{%- capture author-id -%}_authors/{{page.author}}.md{%- endcapture -%}
{% assign author = site.authors | where: 'path', author-id | first %}
{{ author.name }}
</div>
注意:小减号是为了去除任何空白,因为如果您将它们设为多行,则捕获是要这样做的。为了安全起见,我只是添加了它们。如果您想查看我如何在其他页面中引用集合中的字段,您可以read my guide。
我对 Jekyll + NetlifyCMS 有疑问。我想创建 relation widget。我无法使用以下代码在相关小部件中搜索我的作者。我做错了什么?
#config.yml
collections:
authors:
output: true
#_authors/jill.md
---
short_name: jill
name: Jill Smith
position: Chief Editor
---
Lorem ipsum
#admin/config.yml
- name: "pages"
label: "Pages"
files:
- label: 'Homepage'
name: 'homepage'
file: 'pages/homepage.md'
fields:
- label: "Choose author"
name: "author"
widget: "relation"
collection: "authors"
value_field: "short_name"
search_fields: ["name", "short_name"]
我 运行 遇到了完全相同的问题,我需要更多地了解它的实际工作原理以及如何在 Netlify CMS 中更好地引用 Jekyll 页面变量,但我得到了一个可行的解决方案我将适应您的用例。
首先,添加 display_fields
对象,以便用户可以看到他们正在选择哪个作者。这可能是您的问题,因为 docs 概述了它是必需的 属性。我将值字段更改为 {{slug}},因为我们将看到稍后引用该字段将是一种万无一失的方法。此外,我将作者添加到 CMS 配置中,因为我在关系字段中有我引用的集合。我不确定它是否也能起到作用,但是嘿,它不会造成伤害:
#admin/config.yml
- name: "authors"
create: true
folder: "_authors/"
fields:
- label: 'Title'
name: 'title'
widget: 'string'
- label: 'Position'
name: 'position'
widget: 'string'
- name: "pages"
label: "Pages"
files:
- label: 'Homepage'
name: 'homepage'
file: 'pages/homepage.md'
fields:
- label: "Choose author"
name: "author"
widget: "relation"
collection: "authors"
value_field: "{{slug}}"
search_fields: ["name", "short_name"]
display_fields: ["name"]
您可以保留 short_name
作为将提交给主页作者 属性 的值字段,但我将向您展示一种让内容编辑者添加作者和通过 Netlify 将它们应用到带有 slug property. You can customize the slug or just let Jekyll create it by default. I haven't figured out how to access any of the page variables 的页面,而不是首先在 Netlify CMS 中定义它们,但是 slug 在创建时用作集合项的文件名,我可以通过 CMS 配置在本地引用它。
#layouts/home.html
---
title: Home
author: jill
---
<div class="author">
{%- capture author-id -%}_authors/{{page.author}}.md{%- endcapture -%}
{% assign author = site.authors | where: 'path', author-id | first %}
{{ author.name }}
</div>
注意:小减号是为了去除任何空白,因为如果您将它们设为多行,则捕获是要这样做的。为了安全起见,我只是添加了它们。如果您想查看我如何在其他页面中引用集合中的字段,您可以read my guide。