Как вывести список всех тегов из сообщения / страниц
Я хотел бы распечатать теги, связанные с постом / страницей, с помощью 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>