JBake: перечислить все сообщения с определенным тегом (tagged_posts)
Как в freemarker перебирать все сообщения в блоге с помощью определенного тега, например тега «алгоритмы»?
<#assign relatedBlogs = ...>
<#if relatedBlogs?size > 0>
<h2>Related blog posts</h2>
<ul>
<#list relatedBlogs as blog>
<li>
<a href="${content.rootpath}${blog.uri}">${blog.title}</a>
</li>
</#list>
</ul>
</#if>
У меня это не работает:
<#assign relatedBlogs = tagged_posts["algorithms"]>
Это тоже не работает:
<#assign relatedBlogs = tags["algorithms"].tagged_posts>
1 ответ
tags
это последовательность, и использовать
tags[...]
вам нужен хеш. Я закончил тем, что заставил это работать
?filter()
а также
?first
:
<#assign relatedTags = tags?filter(tag -> tag.name == "algorithms")>
<#if relatedTags?size > 0>
<#assign relatedTag = relatedTags?first>
<h2>Algorithms related blog posts</h2>
<ul>
<#list relatedTag.tagged_posts as blog>
<li>
<a href="${content.rootpath}${blog.uri}">${blog.title}</a>
</li>
</#list>
</ul>
</#if>
Это не будет хорошо масштабироваться, потому что
filter()
повторяет теги для каждой страницы, но работает достаточно быстро для веб-сайтов с сотнями страниц. Вот связанная с этим проблема.