【问题标题】:Auto-generated pages in HugoHugo 中自动生成的页面
【发布时间】:2017-06-14 15:21:40
【问题描述】:

是否可以像在中间人中一样从 Hugo 中的数据文件自动生成页面?我有一个 yaml 文件 cars.yml,它看起来像这样:

---
- name: "Ford"
  color: "blue"
- name: "Cadillac"
  color: "pink"

并希望根据预定义的模板为数据文件中的每个汽车记录自动生成一个单独的页面。我该怎么做?

【问题讨论】:

    标签: html generator middleman hugo


    【解决方案1】:

    我写了一个简单的 JS 包装器,它从 Hugo 中的数据生成页面。 我目前正在使用它从 YAML 文件生成文章。

    kidsil/hugo-data-to-pages

    【讨论】:

      【解决方案2】:

      按照documentation 的思路,我通过以下步骤获得了MVP:

      1. 安装了一个测试 Hugo 站点,hugo new site carsite
      2. 根文件夹已经有/data/ 文件夹,我在那里创建了cars 子文件夹。
      3. carsite/data/cars 会将每辆车保存为单独的文件。这与您最初将它们放在列表中的计划不同,但每辆车一个文件的方法更好(版本控制、维护、不易出错,因为错误的 .yml 将被单独标记,而不是单一数据文件)。
      4. /data/ 文件夹内创建内容文件:

        ford.yml:

        Name: "Ford"
        Color: "Blue"
        

        cadillac.yml:

        Name: "Cadillac"
        Color: "Pink"
        
      5. 为汽车列表创建部分样式:

        carsite/themes/<your theme name>/layouts/partials/car_listing.html

        <li>{{ .Name }} in {{ .Color }}</li>
        
      6. 调用循环,或者在 Go 术语中,范围数据文件在文件中,负责您选择的位置。比如我们把它输出到主主页,由carsite/themes/&lt;theme name&gt;/layouts/index.html控制:

        ...(existing header.html partial and so on)...
        <ul>
        {{ range $.Site.Data.cars }}
        {{ partial "car_listing.html" . }}
        {{ end }}
        </ul>
        ...(existing footer.html partial and so on)...
        

      这是它在我身上的样子(ghostwriter 模板):


      如果您坚持将所有文件放在一个数据文件中,那也应该可行,只需查询数据文件并范围。此外,如果您选择yml 格式,请设置数据文件的正确格式sequence(您建议的数据结构看起来很可疑,因为列表直接位于根目录中,而是添加一个键,例如,cars: 根据前面提到的 YML 规范):

      carsite/data/cars.yml

      cars:
          - Name: Ford
            Color: Blue
          - Name: Cadillac
            Color: Pink
      

      【讨论】:

      • 非常感谢!确实,这应该可以解决问题。我别无选择,所以我必须先将 cars.yml 转换为单独的文件或研究第二个解决方案。
      • @helcim,您会将上述答案设置为“已接受”吗?
      • 我可能在这里遗漏了一些东西,但是“每个汽车记录的单独页面”如何?我的意思是,你只是把所有的汽车放在主页上。是否可以为每辆车生成单独的页面?
      • @anula 我的想法完全正确!这没有回答 OP 提出的问题。
      猜你喜欢
      • 1970-01-01
      • 2012-12-14
      • 2011-09-13
      • 2017-08-03
      • 2018-08-11
      • 2016-12-31
      • 2015-07-14
      • 1970-01-01
      • 2010-12-21
      相关资源
      最近更新 更多