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

模板标签可以运用在页面的任何地方。
第一、文章(postTag)
1、获取最新文章(latest)

<@postTag method="latest" top="3">

<#list posts as post>
    <a href="${post.fullPath!}">${post.title!}</a>
</#list>

</@postTag>


2、获取所有文章的数量(count)
<@postTag method="count">
文章数量:${count!0}
</@postTag>

3、根据年份归档(archiveYear)
<@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)
<@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)
<@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)
<@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)
<@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)
<@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)
<@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)
<@commentTag method="latest" top="获取条数">

<ul>
    <#list comments.content as comment>
        <li>${comment.author!}:${comment.content!}</li>
    </#list>
</ul>

</@commentTag>


2、获取所有评论的数量(count)
<@commentTag method="count">
评论数量:${count!0}
</@commentTag>

第三、分类目录(categoryTag)
1、获取所有分类目录(list)
<@categoryTag method="list">
<#list categories as category>

<a href="${category.fullPath!}">${category.name!}(${category.postCount!})</a>

</#list>
</@categoryTag>


2、获取文章的所有分类(listByPostId)
<@categoryTag method="listByPostId" postId="${post.id?c}">
<#list categories as category>

<a href="${category.fullPath!}">${category.name}</a>

</#list>
</@categoryTag>


3、获取所有分类的数量(count)
<@categoryTag method="count">
分类数量:${count!0}
</@categoryTag>

第四、标签(tagTag)
1、获取所有标签(list)
<@tagTag method="list">
<#list tags as tag>

<a href="${tag.fullPath!}">${tag.name!}(${tag.postCount!})</a>

</#list>
</@tagTag>


2、获取文章的所有标签(listByPostId)
<@tagTag method="listByPostId" postId="${post.id?c}">
<#list tags as tag>

<a href="${tag.fullPath!}">${tag.name}</a>

</#list>
</@tagTag>


3、获取所有标签的数量(count)
<@tagTag method="count">
标签数量:${count!0}
</@tagTag>

第五、菜单(menuTag)
1、获取所有菜单(list)
<@menuTag method="list">

    <#list menus as menu>
      <li>
        <a href="${menu.url!}" target="${menu.target!}">${menu.name!}</a>
      </li>
    </#list>


</@menuTag>

2、获取多级菜单(tree)
<@menuTag method="tree">

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


</@menuTag>

3、根据分组获取菜单(listByTeam)
<@menuTag method="listByTeam" team="main">

    <#list menus as menu>
      <li>
        <a href="${menu.url!}" target="${menu.target!}">${menu.name!}</a>
      </li>
    </#list>


</@menuTag>

4、根据分组获取多级菜单(treeByTeam)
<@menuTag method="treeByTeam" team="main">

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


</@menuTag>

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

    <@linkTag method="list">

    <#list links as link>
        <li>
            <a href="${link.url!}" target="_blank">
                ${link.name!}
            </a>
        </li>
    </#list>

    </@linkTag>



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

    <@linkTag method="list">

    <#list links as link>
        <li>
            <a href="${link.url!}" target="_blank">
                ${link.name!}
            </a>
        </li>
    </#list>

    </@linkTag>



3、获取分组友情链接(listTeams)
<@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)
<@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)
<@linkTag method="count">
友情链接数量:${count!0}
</@linkTag>

第七、图库(photoTag)
1、获取所有图片(list)
<@photoTag method="list">

<#list photos as photo>
    <img alt="${photo.description}" src="${photo.url}"/>
</#list>

</@photoTag>


2、获取所有分组图片(listTeams)
<@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)
<@photoTag method="listTeams" team="风景">
<#list team.photos as photo>

<img alt="${photo.description}" src="${photo.url}"/>

</#list>
</@photoTag>


4、获取所有图片的数量(count)
<@linkTag method="count">
图片数量:${count!0}
</@linkTag>

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

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



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

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



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

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



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

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



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

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



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

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



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

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



这样,我们联合其他的Halo主题开发的页面调用标签、公共模板、函数等,基本上可以完成Halo主题开发需要的调用。
相关文章:
1、Halo博客主题开发之页面变量调用示范整理
2、Halo博客主题模板开发之公共宏模板代码规范
3、Halo博客主题开发之全局变量模板标签调用整理
 


扫描二维码,在手机上阅读!