将多个布局应用到 jekyll 中的同一个集合项

ale*_*xsb 8 jekyll

我有一个 jekyll 集合_persons,有多个人的个人资料。现在我想为每个人创建多个布局,例如,为同一个人创建一个“出版物”和一个“生物”子页面。

如何将不同的布局与同一个人物对象相关联?我还想使用子网址,例如:

  • \personA\publications\
  • \personA\bio\

Dav*_*ara 6

假设“bios”是您将要编辑的内容类型,您可以在项目根目录中从_biosto创建符号链接_publications

# Unix/Linux
ln -s _bios _publications
Run Code Online (Sandbox Code Playgroud)

如果您使用 Windows,则需要查看mklink.

然后像这样设置你的 config.yml:

collections:
  bios:
    output: true
  publications:
    output: true
defaults:
  -
    scope:
      path: "_bios"
    values:
      layout: bio
      permalink: /biographies/:title/
  -
    scope:
      path: "_publications"
    values:
      layout: publication
      permalink: /publications/:title/
Run Code Online (Sandbox Code Playgroud)

_bios目录中为您的人员编辑 Markdown 文件,并且不要在他们的前端指定布局或永久链接。

当您的网站建立时,您将获得像example.com/publications/personA和 之类的永久链接example.com/bios/personA。你可以通过循环site.publicationssite.bios往常一样。

您需要定义biopublication布局,这些将可以访问您在bio集合项的前端定义的任何数据。

这个想法的功劳:https : //github.com/jekyll/jekyll/issues/3041#issuecomment-267730851

将集合_persons作为单一事实点并从该集合中创建两个符号链接可能更具语义。

祝你好运!

  • 我不是问这个问题的人,但我已经试过了,可以确认它有效。运行 `bundle exec jekyll serve` 时出现错误:`** 错误:目录已被监视!**`,不过好像可以忽略。 (2认同)