You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在HTML短代码中正确渲染多行Markdown变量?

解决方案

1. 创建处理Markdown的子短代码

在Hugo项目的layouts/shortcodes/目录下新建print_bio.html文件,内容如下:

{{ .Inner | markdownify }}

这个短代码的作用是把传入的内容通过markdownify函数转换成HTML格式。

2. 修改原有人物信息短代码

把你现有的人物短代码(假设文件名是person.html)里的{{ .Get "bio" }}替换成以下调用子短代码的写法,注意要用{{% %}}包裹:

<table>
  <tr>
    <td VALIGN=TOP rowspan="2" width="170"><img src="{{ .Get "img"}}" width="150"></td>
    <td width="600" height="30"><b>{{ .Get "name"}}</b>, <i>{{ .Get "title"}}</i></td>
  </tr>
  <tr> 
    <td VALIGN=TOP>{{% print_bio %}}{{ .Get "bio" }}{{% /print_bio %}}</td>      
  </tr>   
</table> 
<br>   

{{% %}}语法会触发Hugo对短代码内部的内容进行Markdown解析,确保bio里的列表、加粗等格式被正确渲染。

3. 正确调用短代码

现在调用人物短代码时,直接传入带换行的Markdown格式bio内容即可,不需要加反引号:

{{< person img="path/to/avatar.jpg" name="张三" title="高级工程师" bio="Here are some achievements
- First thing
- List item
- and this is **really** important" >}}

关键细节说明

  • 选print_bio.html的原因:Hugo的短代码默认以HTML格式处理,.html后缀的短代码可以直接结合模板逻辑和HTML输出;.md短代码用于纯Markdown内容的渲染,不适合这里在HTML模板中解析Markdown的场景。
  • markdownify函数:Hugo内置函数,专门负责把Markdown文本转换成对应的HTML标签,完美解决列表、加粗等格式的解析需求。
  • {{% %}} vs {{< >}}:{{% %}}会解析短代码内部的Markdown内容,{{< >}}仅渲染短代码的HTML输出,不处理内部Markdown。所以调用print_bio必须用{{% %}}才能让Markdown解析生效。

内容的提问来源于stack exchange,提问作者Scoubi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 22:31:06