如何在Hugo / Markdown页面中包含其他文件?

时间:2016-09-16 20:43:16

标签: markdown hugo

最近我给了一个网站的重新开发。重新加工的网站将在Markdown内完成并运行Hugo static site生成器。

有没有办法在通过Hugo处理的Markdown网页中包含其他文件?如果是这样,怎么样?除非我遗漏了某些内容,否则Hugo docs中没有解决这个问题。

使用HTML和一些服务器(至少是Apache),您可以执行以下操作:

getLaunchIntentForPackager()

我尝试创建一个模板页面,将“Some content”和“More content”等内容放入模板中,然后将我们的.md文件中包含的内容通过{{.Content}}“包含”模板。但是,1)这似乎是使用模板的错误方法。 2)如果我需要,我还没想办法引入更多文件。

3 个答案:

答案 0 :(得分:10)

对于内容文件,有两个选项:

  1. 简码。功能强大且有文档记录。
  2. 使用mmark作为降价渲染引擎及其include功能。将内容文件重命名为" * .mmark"。请参阅https://github.com/miekg/mmark
  3. 我是雨果的维护者。

答案 1 :(得分:4)

我有一个自定义短代码,用于通过降价将我的静态演示文件渲染为代码,这很简单:

布局/简码/ code.html

{{ $file := .Get "file" | readFile }}
{{ $lang := .Get "language" }}
{{ (print "```" $lang "\n" $file "\n```") | markdownify }}

内容/后/ some-post.md

 {{% code file="/static/some-script.js" language="js" %}}

答案 2 :(得分:3)

一位同事建议creating a shortcode帮助解决这个问题。虽然这不是我的想法 - 它比我想要的更复杂 - 它不是太糟糕,我没有找到更好的方法。因此,我使用shortcode和CSV文件实现了解决方案。简单的示例文件如下:

内容文件仍然(主要)是Markdown,看起来像是:

+++
date = "2016-09-29"
title = "short_code_test"
type = "pages"
+++

## Short Code test

Test table should appear below:  

{{< display_table_csv "static/test_data.csv" >}}
  <tr><th>Name</th><th>Birthday</th>
{{< /test_table_shortcode >}}

(请注意,type = "pages"只会提取一个模板,该模板会修改/覆盖hugo-uno默认页面/ single.html模板,以使输出更清晰,以便在下方显示。)

布局/简码/ display_table_csv.html:

<table>
  <thead>
      {{ .Inner }}
  </thead>
  <tbody>
  {{ $url := (index .Params 0) }}
  {{ $sep := "," }}
  {{ range $row_i, $row := getCSV $sep $url }}
  <tr>
    {{ range $col_i, $col := $row }}
    <td>{{ $col }}</td>
    {{ end }}
  </tr>
  {{ end }}
  </tbody>
</table>

静态/ test_data.csv:

John, 1940-10-09
Paul, 1942-06-18
George, 1943-02-25
Ringo, 1940-07-07

此图像显示了呈现的内容: Shortcode test screenshot

Data-driven Content page中的Hugo docs也很有帮助。