2016-09-16 193 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" %}} 
相關問題