Шорткод 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">&times;</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">&times;</span>
     </button>
   </div>

Затем в файле уценки контента:

      {{< message warning >}}
This can cause build errors
{{< message />}}

Нам это показалось лучшим и простым решением, поскольку оно не требовало изменения нашей глобальной конфигурации.

Другие вопросы по тегам