2016-09-16 196 views
3

最近我给了一个网站的重新开发。重新加工的地点将在Markdown中完成,并通过Hugo static site发电机运行。如何将其他文件包含在Hugo/Markdown页面中?

有没有办法在通过Hugo处理的Markdown网页中包含其他文件?如果是这样,怎么样?除非我错过了某些东西,这在Hugo docs中没有解决。

随着HTML和一些服务器(Apache的,至少),你可以这样做:

<html> 
<body> 
Some content 
<!--#include virtual="name_of_first_file_to_include" --> 
More content 
<!--#include virtual="name_of_second_file_to_include" --> 
Still more content 
</body> 
<html> 

我试图创建这使的东西,如“一些内容”和“更多内容”到模板页面模板,然后是包含在我的.md文件中的内容,该文件通过{{.Content}}在模板中“包含”。但是,1)这似乎是使用模板的错误方式。 2)如果我需要它们,我还没有想出一种方法来引入更多文件。

回答

5

内容文件有两种选择:

  1. 简码。功能强大并有文件记录
  2. 使用mmark作为降价渲染引擎及其include功能。将内容文件重命名为“* .mmark”。见https://github.com/miekg/mmark

我是雨果的维护者。

+0

** include **指示mmark做了一些内容过滤,我错了吗? 如果我想在脚本中包含一段原始HTML文件,该怎么办? (例如交互式图表) –

+1

我对mmark不熟悉,但我怀疑你可以用'div'包装它。 但还有第三种选择:Hugo有一个名为'readFile'的模板func,但明白结果并没有以任何方式缓存,所以如果你从一个使用频繁的模板中使用它,我建议你将它包装在' partialCached'。 – bep

+0

* readFile *听起来不错:D我没有注意到!谢谢。 所以我需要写一个简码来包含原始文本。 –

1

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

内容文件仍然是(主要)降价,看起来是这样的:

+++ 
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"刚刚拉在修改/模板覆盖雨果联合国办事处默认页/ 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

Hugo docsData-driven Content page是有益也。

1

我有通过降价使我的静态演示文件作为代码的自定义简码,它很简单:

布局/简码/ code.html

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

内容/后/一些员额。md

{{% code file="/static/some-script.js" language="js" %}} 
相关问题