Как вывести список всех тегов из сообщения / страниц

Я хотел бы распечатать теги, связанные с постом / страницей, с помощью Jbake. Но, прочитав документацию JBake, особенно документацию по модели данных, я знаю о:

  • все теги
  • теги
  • tagged_posts
  • tagged_documents

Но среди этого списка нет модели данных для тегов, специфичных для публикации / страницы. Можно ли печатать теги, специфичные для публикации / страницы?

Я использую:

  • JBake версии 2.7.0-rc.4
  • Apache Freemarker как шаблонизатор

1 ответ

После проб и ошибок я наконец смог перечислить все теги из сообщения / страницы.

Документация JBake для модели данных задокументирована только для глобальной модели данных, поэтому приведенная ниже модель предназначена для глобального использования и не является тем, что я хочу.

  • все теги
  • теги
  • tagged_posts
  • tagged_documents

Теги для публикации / страницы действительно существуют в модели данных. Вы можете получить к нему доступ с помощью ${content.tags}, в нем будут перечислены все теги, связанные с нужной записью / страницей.

Теперь сложнее всего распечатать это. Поскольку tags ключ в модели существует только в / template.

Печатать теги на / template.

Перечислить все теги постов / страниц проще, если вы работаете в / template. Что вам нужно сделать, это повторить content.tags.

      <#list content.tags as tag>
  ${tag}
</#list>

Печатать теги вне / шаблона.

Это когда мне нужно сгенерировать <meta name="keywords" content="" />в разделе заголовка html. Мне нужна особая обработка, когда мета-ключевые слова отображаются вне / template, например index.html.

Потому что, когда не в post / page шаблон content модель данных содержит только два ключа: rootpath а также type. Итак, требуется особая обработка, как показано ниже:

      <#if (content.tags)?? >
  <#-- Make sure we have tags model inside content -->
  <#list content.tags as tag>
    ${tag}<#sep>, </#sep>
  <#else>
    <#-- in case that your page don't have any tags define, print default value if possible -->
  </#list>
<#else>
  <#-- There is no tags model inside content, print default value if possible -->
</#if>
Другие вопросы по тегам