当 table 包含短代码时,如何给 Hugo / markdown table 一个 class?
How to give a Hugo / markdown table a class, when the table contains shortcodes?
在 hugo(版本 v0.77.0)中,我试图用一些特定的样式渲染 table。我正在使用
我正在尝试使用 zwbetz 的 {{ bootstrap-table "classname" }}
shortcode。它在 /layouts/shortcodes/bootstrap-table.html
中定义如下:
{{ $htmlTable := .Inner | markdownify }}
{{ $class := .Get 0 }}
{{ $old := "<table>" }}
{{ $new := printf "<table class=\"%s\">" $class }}
{{ $htmlTable := replace $htmlTable $old $new }}
{{ $htmlTable | safeHTML }}
它在 markdown 中与一个简单的 table 一起正常工作,如下所示:
{{< bootstrap-table "someclassname" >}}
| animal | sound |
|--------|-------|
| dog | meow |
| cat | woof |
{{< /bootstrap-table > }}
但是如果标记下来的 table 包含其他 Hugo 短代码,它会拒绝 table 标记并生成一个空的 table,然后是生成的 html消息(在 html 评论中)说 Hugo 拒绝了一些 html.
这是一个令人反感的降价 table。
{{< bootstrap-table "someclassname" >}}
| animal | sound |
|--------|-------|
| {{< img src="dog.jpg" alt="Dog" class="align__left size__80" >}} | meow |
| {{< img src="cat.jpg" alt="Cat" class="align__left size__80" >}} | woof |
{{< /bootstrap-table > }}
我该怎么做才能让这个 bootstrap-table
Hugo 标签接受我的 table 以及其中的图像或其他 hugo 简码?
这取决于您的 img.html
短代码,因为 bootstrap-table.html
正在使用 markdownify
渲染内部 HTML。所以我的猜测是 img.html
正在输出 non-markdown 语法,因此外部简码无法理解它。
我用常规图像降价语法测试了你的 bootstrap-table.html
短代码以插入图像,这似乎工作正常。
{{< bootstrap-table "someclassname" >}}
| animal | sound |
|--------|-------|
| ![alt text](https://i.imgur.com/JOKsNeT.jpg "cat") | meow |
| ![alt text](https://i.imgur.com/zq0bDrk.jpeg "dog") | woof |
{{< /bootstrap-table >}}
我尝试了 {{<
的各种组合。 {{%
。等等。没有快乐。看起来 markdownify
从短代码定义中引用不允许嵌入的短代码本身呈现 HTML.
这个{{< tablestyle class="table-striped" >}}
简码对我有用;它在页面加载后将 class 或 classes 添加到浏览器页面中的所有表格,并将表格的 ID 设置为 table_0
、table_1
等.
有点javascript-kludgey,但它有效。
{{ $classes := .Get "class" }}
{{ $name := .Get "name" }}
{{ $filename := .Page.File.BaseFileName }}
<script>
window.addEventListener('DOMContentLoaded', (event) => {
try {
var filename = {{ $filename }} || "page"
filename = filename.toLowerCase()
var name = {{ $name }}
name = name || filename || "t"
var tables = document.querySelectorAll("body section article table")
var classes = {{ $classes }}
var classarray = classes.split(/\s+/)
for (var i = 0; i < tables.length; i++){
var table = tables[i]
for (var c = 0; c < classarray.length; c++ ) {
table.classList.add(classarray[c])
}
var id = "table_" + i
if (!table.id) table.id = id
if (!table.getAttribute("name")) table.setAttribute ("name", id)
table.classList.add(id)
table.classList.add(name + "_table")
}
}
catch (e) {
/* empty, intentionally, don't honk out if this doesn't work. */
}
});
</script>
这是最终的 table 简码。
特性:HTML5 兼容性(无对齐*)、Markdown 对齐、Bootstrap 4/5 兼容性、支持、Schema.org 标记、WAI 可访问性、自定义 CSS, 自定义 ID, 响应式 (with CSS)
<script src="https://gist.github.com/djibe/7a8ba9516f4495dbd6fdf1d1de7a60fe.js"></script>
{{< table title="Optional title" class="optional CSS class declaration" id="optional- declaration-a-unique-one-will-be-generated" >}}
| Stade | DFG (CKD-EPI) | Définition |
|:-------:|:----------------------:|------------|
| 1 | > 90 | MRC avec DFG normal ou augmenté |
| 2 | 60-89 | MRC avec DFG légèrement diminué |
| 3A | 45-59 | IRC modérée |
| 3B | 30-44 | IRC modérée |
| 4 | 15-29 | IRC sévère |
| 5 | < 15 | IRC terminale |
{{< /table >}}
在 hugo(版本 v0.77.0)中,我试图用一些特定的样式渲染 table。我正在使用
我正在尝试使用 zwbetz 的 {{ bootstrap-table "classname" }}
shortcode。它在 /layouts/shortcodes/bootstrap-table.html
中定义如下:
{{ $htmlTable := .Inner | markdownify }}
{{ $class := .Get 0 }}
{{ $old := "<table>" }}
{{ $new := printf "<table class=\"%s\">" $class }}
{{ $htmlTable := replace $htmlTable $old $new }}
{{ $htmlTable | safeHTML }}
它在 markdown 中与一个简单的 table 一起正常工作,如下所示:
{{< bootstrap-table "someclassname" >}}
| animal | sound |
|--------|-------|
| dog | meow |
| cat | woof |
{{< /bootstrap-table > }}
但是如果标记下来的 table 包含其他 Hugo 短代码,它会拒绝 table 标记并生成一个空的 table,然后是生成的 html消息(在 html 评论中)说 Hugo 拒绝了一些 html.
这是一个令人反感的降价 table。
{{< bootstrap-table "someclassname" >}}
| animal | sound |
|--------|-------|
| {{< img src="dog.jpg" alt="Dog" class="align__left size__80" >}} | meow |
| {{< img src="cat.jpg" alt="Cat" class="align__left size__80" >}} | woof |
{{< /bootstrap-table > }}
我该怎么做才能让这个 bootstrap-table
Hugo 标签接受我的 table 以及其中的图像或其他 hugo 简码?
这取决于您的 img.html
短代码,因为 bootstrap-table.html
正在使用 markdownify
渲染内部 HTML。所以我的猜测是 img.html
正在输出 non-markdown 语法,因此外部简码无法理解它。
我用常规图像降价语法测试了你的 bootstrap-table.html
短代码以插入图像,这似乎工作正常。
{{< bootstrap-table "someclassname" >}}
| animal | sound |
|--------|-------|
| ![alt text](https://i.imgur.com/JOKsNeT.jpg "cat") | meow |
| ![alt text](https://i.imgur.com/zq0bDrk.jpeg "dog") | woof |
{{< /bootstrap-table >}}
我尝试了 {{<
的各种组合。 {{%
。等等。没有快乐。看起来 markdownify
从短代码定义中引用不允许嵌入的短代码本身呈现 HTML.
这个{{< tablestyle class="table-striped" >}}
简码对我有用;它在页面加载后将 class 或 classes 添加到浏览器页面中的所有表格,并将表格的 ID 设置为 table_0
、table_1
等.
有点javascript-kludgey,但它有效。
{{ $classes := .Get "class" }}
{{ $name := .Get "name" }}
{{ $filename := .Page.File.BaseFileName }}
<script>
window.addEventListener('DOMContentLoaded', (event) => {
try {
var filename = {{ $filename }} || "page"
filename = filename.toLowerCase()
var name = {{ $name }}
name = name || filename || "t"
var tables = document.querySelectorAll("body section article table")
var classes = {{ $classes }}
var classarray = classes.split(/\s+/)
for (var i = 0; i < tables.length; i++){
var table = tables[i]
for (var c = 0; c < classarray.length; c++ ) {
table.classList.add(classarray[c])
}
var id = "table_" + i
if (!table.id) table.id = id
if (!table.getAttribute("name")) table.setAttribute ("name", id)
table.classList.add(id)
table.classList.add(name + "_table")
}
}
catch (e) {
/* empty, intentionally, don't honk out if this doesn't work. */
}
});
</script>
这是最终的 table 简码。
特性:HTML5 兼容性(无对齐*)、Markdown 对齐、Bootstrap 4/5 兼容性、支持、Schema.org 标记、WAI 可访问性、自定义 CSS, 自定义 ID, 响应式 (with CSS)
<script src="https://gist.github.com/djibe/7a8ba9516f4495dbd6fdf1d1de7a60fe.js"></script>
{{< table title="Optional title" class="optional CSS class declaration" id="optional- declaration-a-unique-one-will-be-generated" >}}
| Stade | DFG (CKD-EPI) | Définition |
|:-------:|:----------------------:|------------|
| 1 | > 90 | MRC avec DFG normal ou augmenté |
| 2 | 60-89 | MRC avec DFG légèrement diminué |
| 3A | 45-59 | IRC modérée |
| 3B | 30-44 | IRC modérée |
| 4 | 15-29 | IRC sévère |
| 5 | < 15 | IRC terminale |
{{< /table >}}