前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >37个常用Halo Java轻量博客页面模板标签调用(快速调用页面数据)

37个常用Halo Java轻量博客页面模板标签调用(快速调用页面数据)

作者头像
老蒋
发布于 2021-12-22 11:28:09
发布于 2021-12-22 11:28:09
76600
代码可运行
举报
文章被收录于专栏:老蒋专栏老蒋专栏
运行总次数:0
代码可运行

这篇文章应该算是Halo Java轻量博客程序的最后一篇主题开发的最后篇文章。在前面老蒋有整理到Halo页面调用、公共模板、全局变量的调用。这里我们是不是有需要页面模板标签的调用,比如最新文章、菜单、图片组的调用,这篇文章是比较全的37个Halo页面模板标签调用整理。

模板标签可以运用在页面的任何地方。

第一、文章(postTag)

1、获取最新文章(latest)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<@postTag method="latest" top="3">
    <#list posts as post>
        <a href="${post.fullPath!}">${post.title!}</a>
    </#list>
</@postTag>

2、获取所有文章的数量(count)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<@postTag method="count">
<span>文章数量:${count!0}</span>
</@postTag>

3、根据年份归档(archiveYear)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<@postTag method="archiveYear">
  <#list archives as archive>
      <h1>年份: ${archive.year?c}</h1>
      <ul>
          <#list archive.posts?sort_by("createTime")?reverse as post>
            <li>
              <a href="${post.fullPath!}">${post.title!}</a>
            </li>
          </#list>
      </ul>
  </#list>
</@postTag>

4、根据年月归档(archiveMonth)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<@postTag method="archiveMonth">
  <#list archives as archive>
      <h1>${archive.year?c}-${archive.month?c}</h1>
      <ul>
          <#list archive.posts?sort_by("createTime")?reverse as post>
            <li>
              <a href="${post.fullPath!}">${post.title!}</a>
            </li>
          </#list>
      </ul>
  </#list>
</@postTag>

5、归档(archive)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<@postTag method="archive" type="month">
  <#list archives as archive>
      <h1>${archive.year?c}-${archive.month?c}</h1>
      <ul>
          <#list archive.posts?sort_by("createTime")?reverse as post>
            <li>
              <a href="${post.fullPath!}">${post.title!}</a>
            </li>
          </#list>
      </ul>
  </#list>
</@postTag>

6、根据分类 id 获取文章(listByCategoryId)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<@postTag method="listByCategoryId" top="${category.id?c}">
    <span>分类 ${category.name!} 下的文章:</span>
    <#list posts as post>
        <a href="${post.fullPath!}">${post.title!}</a>
    </#list>
</@postTag>

7、根据分类 slug 获取文章(listByCategorySlug)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<@postTag method="listByCategorySlug" categorySlug="${category.slug!}">
    <span>分类 ${category.name!} 下的文章:</span>
    <#list posts as post>
        <a href="${post.fullPath!}">${post.title!}</a>
    </#list>
</@postTag>

8、根据标签 id 获取文章(listByTagId)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<@postTag method="listByTagId" tagId="${tag.id?c}">
    <span>标签 ${tag.name!} 下的文章:</span>
    <#list posts as post>
        <a href="${post.fullPath!}">${post.title!}</a>
    </#list>
</@postTag>

9、根据标签 slug 获取文章(listByTagSlug)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<@postTag method="listByTagSlug" tagSlug="${tag.slug!}">
    <span>标签 ${tag.name!} 下的文章:</span>
    <#list posts as post>
        <a href="${post.fullPath!}">${post.title!}</a>
    </#list>
</@postTag>

第二、评论(commentTag)

1、获取最新评论(latest)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<@commentTag method="latest" top="获取条数">
    <ul>
        <#list comments.content as comment>
            <li>${comment.author!}:${comment.content!}</li>
        </#list>
    </ul>
</@commentTag>

2、获取所有评论的数量(count)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<@commentTag method="count">
<span>评论数量:${count!0}</span>
</@commentTag>

第三、分类目录(categoryTag)

1、获取所有分类目录(list)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<@categoryTag method="list">
  <#list categories as category>
    <a href="${category.fullPath!}">${category.name!}(${category.postCount!}</a>
  </#list>
</@categoryTag>

2、获取文章的所有分类(listByPostId)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<@categoryTag method="listByPostId" postId="${post.id?c}">
  <#list categories as category>
    <a href="${category.fullPath!}">${category.name}</a>
  </#list>
</@categoryTag>

3、获取所有分类的数量(count)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<@categoryTag method="count">
<span>分类数量:${count!0}</span>
</@categoryTag>

第四、标签(tagTag)

1、获取所有标签(list)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<@tagTag method="list">
  <#list tags as tag>
    <a href="${tag.fullPath!}">${tag.name!}(${tag.postCount!}</a>
  </#list>
</@tagTag>

2、获取文章的所有标签(listByPostId)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<@tagTag method="listByPostId" postId="${post.id?c}">
  <#list tags as tag>
    <a href="${tag.fullPath!}">${tag.name}</a>
  </#list>
</@tagTag>

3、获取所有标签的数量(count)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<@tagTag method="count">
<span>标签数量:${count!0}</span>
</@tagTag>

第五、菜单(menuTag)

1、获取所有菜单(list)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<@menuTag method="list">
  <ul>
    <#list menus as menu>
      <li>
        <a href="${menu.url!}" target="${menu.target!}">${menu.name!}</a>
      </li>
    </#list>
  </ul>
</@menuTag>

2、获取多级菜单(tree)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<@menuTag method="tree">
  <ul>
    <#list menus as menu>
      <li>
        <a href="${menu.url!}" target="${menu.target!}">${menu.name!}</a>
        <#if menu.children?? && menu.children?size gt 0>
            <ul>
              <#list menu.children as child>
                <li>
                  <a href="${child.url!}" target="${menu.target!}">${child.name!}</a>
                </li>
              </#list>
            </ul>
        </#if>
      </li>
    </#list>
  </ul>
</@menuTag>

3、根据分组获取菜单(listByTeam)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<@menuTag method="listByTeam" team="main">
  <ul>
    <#list menus as menu>
      <li>
        <a href="${menu.url!}" target="${menu.target!}">${menu.name!}</a>
      </li>
    </#list>
  </ul>
</@menuTag>

4、根据分组获取多级菜单(treeByTeam)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<@menuTag method="treeByTeam" team="main">
  <ul>
    <#list menus as menu>
      <li>
        <a href="${menu.url!}" target="${menu.target!}">${menu.name!}</a>
        <#if menu.children?? && menu.children?size gt 0>
            <ul>
              <#list menu.children as child>
                <li>
                  <a href="${child.url!}" target="${menu.target!}">${child.name!}</a>
                </li>
              </#list>
            </ul>
        </#if>
      </li>
    </#list>
  </ul>
</@menuTag>

第六、友情链接(linkTag)

1、获取所有友情链接(list)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<ul>
  <@linkTag method="list">
    <#list links as link>
        <li>
            <a href="${link.url!}" target="_blank">
                ${link.name!}
            </a>
        </li>
    </#list>
  </@linkTag>
</ul>

2、乱序获取所有友情链接(listByRandom)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<ul>
  <@linkTag method="list">
    <#list links as link>
        <li>
            <a href="${link.url!}" target="_blank">
                ${link.name!}
            </a>
        </li>
    </#list>
  </@linkTag>
</ul>

3、获取分组友情链接(listTeams)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<@linkTag method="listTeams">
  <#list teams as team>
    <h1>${team.team}</h1>
    <ul>
      <#list links as link>
        <li>
          <a href="${link.url!}" target="_blank">
          ${link.name!}
          </a>
        </li>
      </#list>
    </ul>
  </#list>
</@linkTag>

4、乱序获取分组友情链接(listTeamsByRandom)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<@linkTag method="listTeamsByRandom">
  <#list teams as team>
    <h1>${team.team}</h1>
    <ul>
      <#list links as link>
        <li>
          <a href="${link.url!}" target="_blank">
          ${link.name!}
          </a>
        </li>
      </#list>
    </ul>
  </#list>
</@linkTag>

5、获取所有友情链接的数量(count)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<@linkTag method="count">
<span>友情链接数量:${count!0}</span>
</@linkTag>

第七、图库(photoTag)

1、获取所有图片(list)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<@photoTag method="list">
    <#list photos as photo>
        <img alt="${photo.description}" src="${photo.url}"/>
    </#list>
</@photoTag>

2、获取所有分组图片(listTeams)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<@photoTag method="listTeams">
    <#list teams as team>
        <h1>${team.team}</h1>
    <#list team.photos as photo>
        <img alt="${photo.description}" src="${photo.url}"/>
    </#list>
    </#list>
</@photoTag>

3、根据分组获取图片(listByTeam)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<@photoTag method="listTeams" team="风景">
  <#list team.photos as photo>
    <img alt="${photo.description}" src="${photo.url}"/>
  </#list>
</@photoTag>

4、获取所有图片的数量(count)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<@linkTag method="count">
<span>图片数量:${count!0}</span>
</@linkTag>

第八、分页(paginationTag)

1、获取首页文章列表的分页数据(index)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<ul class="pagination">
    <@paginationTag method="index" page="${posts.number}" total="${posts.totalPages}" display="3">
        <#if pagination.hasPrev>
            <li>
                <a href="${pagination.prevPageFullPath!}">上一页</a>
            </li>
        </#if>
        <#list pagination.rainbowPages as number>
            <#if number.isCurrent>
                <li>
                    <span class="current">${number.page!}</span>
                </li>
            <#else>
                <li>
                    <a href="${number.fullPath!}">${number.page!}</a>
                </li>
            </#if>
        </#list>
        <#if pagination.hasNext>
            <li>
                <a href="${pagination.nextPageFullPath!}">下一页</a>
            </li>
        </#if>
    </@paginationTag>
</ul>

2、获取文章归档列表的分页数据(archives)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<ul class="pagination">
    <@paginationTag method="archives" page="${posts.number}" total="${posts.totalPages}" display="3">
        <#if pagination.hasPrev>
            <li>
                <a href="${pagination.prevPageFullPath!}">上一页</a>
            </li>
        </#if>
        <#list pagination.rainbowPages as number>
            <#if number.isCurrent>
                <li>
                    <span class="current">${number.page!}</span>
                </li>
            <#else>
                <li>
                    <a href="${number.fullPath!}">${number.page!}</a>
                </li>
            </#if>
        </#list>
        <#if pagination.hasNext>
            <li>
                <a href="${pagination.nextPageFullPath!}">下一页</a>
            </li>
        </#if>
    </@paginationTag>
</ul>

3、获取搜索结果文章列表的分页数据(search)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<ul class="pagination">
    <@paginationTag method="search" page="${posts.number}" total="${posts.totalPages}" keyword="${keyword}" display="3">
        <#if pagination.hasPrev>
            <li>
                <a href="${pagination.prevPageFullPath!}">上一页</a>
            </li>
        </#if>
        <#list pagination.rainbowPages as number>
            <#if number.isCurrent>
                <li>
                    <span class="current">${number.page!}</span>
                </li>
            <#else>
                <li>
                    <a href="${number.fullPath!}">${number.page!}</a>
                </li>
            </#if>
        </#list>
        <#if pagination.hasNext>
            <li>
                <a href="${pagination.nextPageFullPath!}">下一页</a>
            </li>
        </#if>
    </@paginationTag>
</ul>

4、获取标签下文章列表的分页数据(tagPosts)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<ul class="pagination">
    <@paginationTag method="tagPosts" slug="${tag.slug!}" page="${posts.number}" total="${posts.totalPages}" display="3">
        <#if pagination.hasPrev>
            <li>
                <a href="${pagination.prevPageFullPath!}">上一页</a>
            </li>
        </#if>
        <#list pagination.rainbowPages as number>
            <#if number.isCurrent>
                <li>
                    <span class="current">${number.page!}</span>
                </li>
            <#else>
                <li>
                    <a href="${number.fullPath!}">${number.page!}</a>
                </li>
            </#if>
        </#list>
        <#if pagination.hasNext>
            <li>
                <a href="${pagination.nextPageFullPath!}">下一页</a>
            </li>
        </#if>
    </@paginationTag>
</ul>

5、获取分类下文章列表的分页数据(categoryPosts)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<ul class="pagination">
    <@paginationTag method="categoryPosts" slug="${category.slug!}" page="${posts.number}" total="${posts.totalPages}" display="3">
        <#if pagination.hasPrev>
            <li>
                <a href="${pagination.prevPageFullPath!}">上一页</a>
            </li>
        </#if>
        <#list pagination.rainbowPages as number>
            <#if number.isCurrent>
                <li>
                    <span class="current">${number.page!}</span>
                </li>
            <#else>
                <li>
                    <a href="${number.fullPath!}">${number.page!}</a>
                </li>
            </#if>
        </#list>
        <#if pagination.hasNext>
            <li>
                <a href="${pagination.nextPageFullPath!}">下一页</a>
            </li>
        </#if>
    </@paginationTag>
</ul>

6、获取图库页面图片列表的分页数据(photos)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<ul class="pagination">
    <@paginationTag method="photos" page="${photos.number}" total="${photos.totalPages}" display="3">
        <#if pagination.hasPrev>
            <li>
                <a href="${pagination.prevPageFullPath!}">上一页</a>
            </li>
        </#if>
        <#list pagination.rainbowPages as number>
            <#if number.isCurrent>
                <li>
                    <span class="current">${number.page!}</span>
                </li>
            <#else>
                <li>
                    <a href="${number.fullPath!}">${number.page!}</a>
                </li>
            </#if>
        </#list>
        <#if pagination.hasNext>
            <li>
                <a href="${pagination.nextPageFullPath!}">下一页</a>
            </li>
        </#if>
    </@paginationTag>
</ul>

7、获取日志页面日志列表的分页数据(journals)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<ul class="pagination">
    <@paginationTag method="journals" page="${journals.number}" total="${journals.totalPages}" display="3">
        <#if pagination.hasPrev>
            <li>
                <a href="${pagination.prevPageFullPath!}">上一页</a>
            </li>
        </#if>
        <#list pagination.rainbowPages as number>
            <#if number.isCurrent>
                <li>
                    <span class="current">${number.page!}</span>
                </li>
            <#else>
                <li>
                    <a href="${number.fullPath!}">${number.page!}</a>
                </li>
            </#if>
        </#list>
        <#if pagination.hasNext>
            <li>
                <a href="${pagination.nextPageFullPath!}">下一页</a>
            </li>
        </#if>
    </@paginationTag>
</ul>

这样,我们联合其他的Halo主题开发的页面调用标签、公共模板、函数等,基本上可以完成Halo主题开发需要的调用。

相关文章:

1、Halo博客主题开发之页面变量调用示范整理

2、Halo博客主题模板开发之公共宏模板代码规范

3、Halo博客主题开发之全局变量模板标签调用整理

本文出处:老蒋部落 » 37个常用Halo Java轻量博客页面模板标签调用(快速调用页面数据)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-09-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
我们一起来学RabbitMQ 三:RabbiMQ 死信队列,延迟队列,持久化等知识点
fanout exchange 可以做成备份的交换机,因为 fanout 的消息是广播的方式
阿兵云原生
2023/02/16
2810
rabbitmq之rabbitmq工作模型与Java编程(一)
1、跨系统的异步通信 人民银行二代支付系统,使用重量级消息队列 IBM MQ,异步,解耦,削峰都有体现。 2、应用内的同步变成异步 秒杀:自己发送给自己 3、基于Pub/Sub模型实现的事件驱动 放款失败通知、提货通知、购买碎屏保 系统间同步数据 摒弃ELT(比如全量同步商户数据); 摒弃API(比如定时增量获取用户、获取产品,变成增量广播)。 4、利用RabbitMQ实现事务的最终一致性
周杰伦本人
2022/10/25
3970
rabbitmq之rabbitmq工作模型与Java编程(一)
RabbitMQ 基础概念与架构设计及工作机制学习总结
MQ全称为Message Queue,即消息队列. 它也是一个队列,遵循FIFO原则 。RabbitMQ则是一个开源的消息中间件,由erlang语言开发,基于AMQP协议实现的一个软件产品,提供应用程序之间的通信方法,在分布式系统开发中广泛应用。
授客
2024/11/21
4980
RabbitMQ 基础概念与架构设计及工作机制学习总结
消息队列——RabbitMQ的基本使用及高级特性
Rabbit是基于AMQP协议并使用Erlang开发的开源消息队列中间件,它支持多种语言的客户端,也是目前市面上使用比较广泛的一种消息队列,因此学习并掌握它是非常有必要的。本文主要基于Java客户端进行讲解,不涉及环境搭建部分。
夜勿语
2020/09/07
8080
Rabbitmq小书
1.生产者(Publisher): 发布消息到RabbitMQ中的交换机(Exchange)上
大忽悠爱学习
2022/10/04
3.4K0
Rabbitmq小书
Java开发面试--RabbitMQ专区3
RabbitMQ是一个消息中间件,本身并不支持分布式事务。但可以通过以下几种方式来实现分布式事务:
忆愿
2024/09/14
740
Java开发面试--RabbitMQ专区3
消息队列技术选型:这 7 种消息场景一定要考虑!
我们在做消息队列的技术选型时,往往会结合业务场景进行考虑。今天来聊一聊消息队列可能会用到的 7 种消息场景。
jinjunzhu
2023/09/27
6000
消息队列技术选型:这 7 种消息场景一定要考虑!
RabbitMQ
RabbitMQ属于中间件的一种,其实很多东西都是中间件比如说mysql redis都是的 其实中间件是一种概念,只要是实现软件和软件之间沟通连接的软件都可以叫做中间件
xiaozhangStu
2023/05/04
1K0
RabbitMQ 26问,基本涵盖了面试官必问的面试题
**Connection** **极大减少了操作系统建立** **TCP connection** **的开销**
小熊学Java
2022/09/04
5550
高性能消息队列中间件MQ_part2
之前我们使用原生JAVA操作RabbitMQ较为繁琐,接下来我们使用SpringBoot整合RabbitMQ,简化代码编写。
天天Lotay
2023/02/16
4370
高性能消息队列中间件MQ_part2
RabbitMq 总结
不依赖于路由键的匹配规则路由消息,根据发送的消息内容headers属性进行完全匹配(键值对形式)。性能差,基本不使用。
leon公众号精选
2022/04/27
4710
RabbitMq 总结
RabbitMQ---延迟队列,整合springboot
延时队列,队列内部是有序的,最重要的特性就体现在它的延时属性上,延时队列中的元素是希望在指定时间到了以后或之前取出和处理,简单来说,延时队列就是用来存放需要在指定时间被处理的元素的队列。
大忽悠爱学习
2021/12/07
6550
RabbitMQ---延迟队列,整合springboot
RabbitMQ 超详细入门篇
本人使用的是 阿里云服务器 没有的话也可以使用虚拟机… 事先使用连接工具上传了文件
Java_慈祥
2024/08/06
1.7K0
RabbitMQ 超详细入门篇
消息队列-RabbitMQ
交换机有四种类型:direct exchange、topic exchange、fanout exchange、headers exchange。
lpe234
2021/03/04
1.7K0
基于RabbitMQ实现延迟队列--PHP版
场景一:物联网系统经常会遇到向终端下发命令,如果命令一段时间没有应答,就需要设置成超时。
码农编程进阶笔记
2022/04/08
8450
基于RabbitMQ实现延迟队列--PHP版
RabbitMQ 高频考点
比如有一个订单系统,还要一个库存系统,用户下订单后要调用库存系统来处理,直接调用话,库存系统出现问题咋办呢?
sowhat1412
2022/09/20
6800
RabbitMQ 高频考点
Rabbitmq业务难点
消息生产者如果向交换机发送了一个无法被路由到任何队列上的消息,那么此时交换机会判断消息的mandatory属性值:
大忽悠爱学习
2023/02/26
8420
Rabbitmq业务难点
RabbitMQ
​ MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是 message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了 MQ 之后,消息发送上游只需要依赖 MQ,不用依赖其他服务。
OY
2022/03/21
1.8K0
RabbitMQ
RabbitMQ 延迟队列
延时队列,队列内部是有序的,最重要的特性就体现在它的延时属性上,延时队列中的元素是希望 在指定时间到了以后或之前取出和处理,简单来说,延时队列就是用来存放需要在指定时间被处理的 元素的队列。
用户9615083
2022/12/25
6460
RabbitMQ 延迟队列
RabbitMQ高级面试题
在生产者投递消息时指定mandatory或者imrnediate参数设为 true 时,RabbitMQ 会把无法投递的消息通过Basic.Return 命令将消息返回给生产者,此时生产者需要调用channel.addReturnListener 来添加 ReturnListener 监昕器实现监听投递失败的消息
Java学习录
2019/07/01
3.9K0
相关推荐
我们一起来学RabbitMQ 三:RabbiMQ 死信队列,延迟队列,持久化等知识点
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文