如何列出帖子/页面中的所有标签

Posted

技术标签:

【中文标题】如何列出帖子/页面中的所有标签【英文标题】:How to list all tags from post / pages 【发布时间】:2021-11-25 12:43:20 【问题描述】:

我想用 Jbake 打印与帖子/页面相关的标签。但是,在阅读了 JBake 文档之后,尤其是 Data Model 文档,到目前为止我知道:

所有标签 标签 tagged_posts tagged_documents

但是,在这些列表中,没有特定于帖子/页面的标签的数据模型。可以打印特定于帖子/页面的标签吗?

我正在使用:

JBake 版本 2.7.0-rc.4 Apache Freemarker 作为模板引擎

【问题讨论】:

【参考方案1】:

经过反复试验,我终于可以列出帖子/页面中的所有标签。

数据模型的 JBake 文档只记录了全局数据模型,所以下面列出的模型是供全局使用的,不是我想要的。

所有标签 标签 tagged_posts tagged_documents

帖子/页面的标签实际上存在于content 数据模型中。您可以使用$content.tags 访问它,这将列出与您想要的帖子/页面相关的所有标签。

现在,打印它是棘手的部分。因为content模型中的tags键只存在于post/page模板中。

post / page 模板上打印标签。

当您在post / page 模板下工作时,列出所有帖子/页面标签会更容易。你需要做的是迭代content.tags

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

post / page 模板之外打印标签。

这种情况是我需要在html head部分生成&lt;meta name="keywords" content="" /&gt;。当元关键字呈现在post / page 模板之外时,我需要特殊处理,例如index.html

因为当不在post / page 模板中时,content 数据模型只包含两个键:rootpathtype。所以,需要像下面这样特殊处理:

<#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>

【讨论】:

以上是关于如何列出帖子/页面中的所有标签的主要内容,如果未能解决你的问题,请参考以下文章

php WooCommerce |列出存档页面中的所有产品标签

php WooCommerce |列出存档页面中的所有产品标签

如何隐藏博客标签搜索中的小部件

WordPress中的自定义博客存档页面

如何下载帖子表中的所有标签?

如何从 Wordpress 页面/帖子中获取所有标签作为简码列表?