Шорткод Hugo проигнорировал сообщение "необработанный HTML опущен"
Я написал шорткод для создания отключаемого окна предупреждения при загрузке. Ниже мой шорткод называетсяlayouts/shortcodes/message.html
.
<div class="alert alert-{{.Get 0}} alert-dismissible fade show" role="alert">
{{.Inner}}
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
Вот как я звоню из своего файла разметки контента:
{{% message warning%}}
This can cause build errors
{{% /message %}}
Однако в выходном HTML генерируется код ниже:
<!-- raw HTML omitted -->
<p>This can cause build errors</p>
<!-- raw HTML omitted -->
Я не понимаю, что здесь не так. Я создал другие шорткоды (не используя.Inner, это моя первая попытка), и они работают нормально, например, я создал шорткод для сетки изображений, такой как pinterest, который принимает до 10 URL-адресов изображений и выводит HTML. Не уверен, почему этот конкретный шорткод.Inner не работает. Пожалуйста помоги. Моя версия Хьюгоv0.74.3/extended darwin/amd64
.
РЕДАКТИРОВАТЬ
Когда я использую теги {{< >}}
вместо того {{% %}}
тогда это работает. Но я могу сделать уценку во внутреннем тексте и, следовательно, хотел бы использовать{{% %}}
.
Если я правильно понимаю, используя {{% %}}
сначала обработает уценку внутри внутреннего текста, а затем передаст ее в шорткод как .Inner
.
2 ответа
Это наиболее часто задаваемый вопрос в разделе "Новые вопросы " hugo "- stackru за последние 5 дней!¹
В вашем файле конфигурации Hugo вам нужно указать модулю рендеринга Markdown по умолчанию, которым является Goldmark, отображать необработанный HTML. Если вы используете config.yaml, используйте это:
markup:
goldmark:
renderer:
unsafe: true
Если вы используете config.toml, используйте это:
[markup]
[markup.goldmark]
[markup.goldmark.renderer]
unsafe = true
Я писал об этом на своем сайте в http://www.ii.com/hugo-tips-fragments/.
¹ Я уже третий раз отвечаю на этот часто задаваемый вопрос за 5 дней. В 2 другие времена были в использовании Hugo инлайн JavaScript в постах и Вставить IFrame Amazon Associate Ссылка на файл.md R.
Если вы хотите, чтобы ваша уценка была безопасной (например, если на вашем сайте есть приглашенные авторы или вы хотите запретить авторам сообщений в блогах добавлять JavaScript в свои сообщения), вы можете использоватьmarkdownify
функция в вашем коротком коде следующим образом:
<div class="alert alert-{{.Get 0}} alert-dismissible fade show" role="alert">
{{ .Inner | markdownify }}
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
Затем в файле уценки контента:
{{< message warning >}}
This can cause build errors
{{< message />}}
Нам это показалось лучшим и простым решением, поскольку оно не требовало изменения нашей глобальной конфигурации.