本文介绍richcms中文章模板及文章函数的调用,文章系统是系统的重点部分,建议详细阅读。
前言
列表文章的结构定义:
type Article struct {
Id int64 //文章
CateId int //栏目id
ParentId int //父栏目id
RootId int //根栏目id
Uid int64 //发布人
Username string //发布人
Title string //标签
Photo string //标题图
Author string //作者
Tag string //标签 1,2,3
Views int //点击量
Month int //月份
State int //文章状态 0/1
IsHot int //是否热门 0/1
Description string //文章简介
Updated int //更新时间
Created int //创建时间
CateName string //栏目名称
CateLink string //栏目链接
MonthLink string //月份的链接
Link string //文章链接地址
SimpleTag []*SimpleTag //展示用的标签列表,即当前文章有哪些标签
}
模板函数
函数指,在页面上可调用的,需要在页面上赋值后,再使用。
1. 最新文章列表
名称:fn_new_article_list
参数:limit(条数)
演示代码:
<% $list:=fn_new_article_list 5 %>
<ul>
<% range $list%>
<li><a href="<% .Link%>"><% .Title%></a></li>
<% end %>
</ul>
代码说明:
- 取5条最新的文章列表,赋值给 $list 变量, 循环 $list 把文章显示在网页上。
2.热门的文章列表
名称:fn_hot_article_list
参数:limit(条数)
演示代码:
<% $list:=fn_hot_article_list 5 %>
<ul>
<% range $list%>
<li><a href="<% .Link%>"><% .Title%></a> / <% fn_date_format .Created%> </li>
<% end %>
</ul>
代码说明:
- 取5条最热门的文章列表,赋值给 $list 变量, 循环 $list 把文章显示在网页上。
- fn_date_format 用于把格式为数字格式的时间,转化为常见的时间格式
3.按分类读取最新文章列表
名称:fn_new_article_list_by_category
参数:limit(条数) cateId(栏目id)
演示代码:
<% $list:=fn_new_article_list_by_category 5 2 %>
<ul>
<% range $list%>
<li><a href="<% .Link%>"><% .Title%></a> / <% fn_date_format .Created%> </li>
<% end %>
</ul>
代码说明:
- 取5条栏目id=2的最新文章列表。
4.按分类读取热门文章列表
名称:fn_hot_article_list_by_category
参数:limit(条数) cateId(栏目id)
演示代码:
<% $list:=fn_hot_article_list_by_category 5 2 %>
<ul>
<% range $list%>
<li><a href="<% .Link%>"><% .Title%></a> / <% .Author %> </li>
<% end %>
</ul>
代码说明:
- 取5条栏目id=2的热门文章列表;
- .Author为后台发布的作者;
4.栏目列表
名称:fn_publish_category_list
参数:无
演示代码:
<% $list:=fn_publish_category_list%>
<ul>
<li><% range $list%><a href="<% .Link%>"> <% .CateName%></a> <% end %> </li>
</ul>
代码说明:
- 取所有发布栏目到到变量 $list,同时循环显示;
- .CateName为栏目名称,.Link 为栏目的地址;
5.某个栏目的信息
名称:fn_category
参数:cateId (栏目id)
演示代码:
<% $cate:=fn_category 1 %>
<a href="<% $cate.Link %>"><% $cate.CateName %></a>
代码说明:
- 取出栏目id=1的栏目信息,赋值给 $cate 变量;
- $cate.CateName 为栏目名称;
- $cate.Link 为栏目地址;
6.某个栏目的翻页文章列表
名称:fn_article_page_by_category
参数:page(当前页码)、limit(每页条数)、cateId(栏目id)
演示代码:
<div class="box">
<% $cate:=fn_category 1 %>
<h2>Article: </h2>
<% $pageList:=fn_article_page_by_category .page.Page 5 $cate.CateId %>
<ul>
<%range $pageList.Data%>
<li><a href="<% .Link%>"> <% .Title%> </a> </li>
<% end %>
</ul>
<p>
翻页: <% fn_pager .page.Page 5 $pageList.Count $cate.Link | str2html %>
</p>
</div>
代码说明:
- 取出栏目id=1的栏目信息,赋值给 $cate 变量;
- 调用 fn_article_page_by_category 函数,传入3个参数,后,赋值给$pageList变量;
- 使用 range 循环取出 $pageList.Data ,即文章列表;
- 调用翻页函数 fn_pager,显示翻页的效果。
7.翻页函数
名称:fn_pager
参数:page(当前页码)、limit(每页条数)、count(文章总条数)、link(当前页地址)
演示代码:
<div class="box">
<% $cate:=fn_category 1 %>
<h2>Article: </h2>
<% $pageList:=fn_article_page_by_category .page.Page 5 $cate.CateId %>
<ul>
<%range $pageList.Data%>
<li><a href="<% .Link%>"> <% .Title%> </a> </li>
<% end %>
</ul>
<p>
翻页: <% fn_pager .page.Page 5 $pageList.Count $cate.Link | str2html %>
</p>
</div>
代码说明:
- 调用翻页函数,把翻页输出的字串,使用 | str2html 转换成html代码;
- 此处 str2html是把字串转换成html代码的函数,| 符号,和linux下的 ls | grep a 表达的意义一样。
7.上一篇、下一篇文章
名称:fn_article_last_next
参数:created(文章发布时间)
演示代码:
<% $ta:=fn_article_last_next .article.Created %>
<!-- Previous article -->
<div class="col-12 col-sm-6 prev-post-start">
<span class="d-block text-muted mb-2">上一篇文章</span> «
<% if $ta.Last %>
<a href="<% $ta.Last.Link %>" rel="prev"><% $ta.Last.Title %></a>
<% else %>
没有上一篇..
<% end %>
</div>
<!-- Next article -->
<div class="col-12 col-sm-6 next-post-end">
<span class="d-block text-muted mb-2">下一篇文章</span>
<% if $ta.Next %>
<a href="<% $ta.Next.Link %>" rel="next"><% $ta.Next.Title %></a>
<% else %>
没有下一篇了..
<% end %>
»
</div>
代码说明:
- 调用 fn_article_last_next 函数,并把当前文章(主要用在文章详情页)的发布时间传入;
- <% if $ta.Last %> 判断是否有上一篇文章,如果有,就显示它。
- <% if $ta.Next %> 判断是否有下一篇文章,如果有,就显示它。
8.某篇文章的标签列表
名称:fn_tag_list_by_article
参数:tag(标签字串,比如1,2,3)
演示代码:
<% $tags:=fn_tag_list_by_article .article.Tag %>
<% if $tags %>
<div class="grey-rule"></div>
<div class="tags">
标签:
<% range $tags %>
<a href="<%.Link%>" target="_blank"><% .TagName %></a>
<% end %>
</div>
<% end %>
代码说明:
- 调用标签函数 fn_tag_list_by_article ,传入 某一篇文章的标签字串;
- 如果 $tags 有数据,则遍历标签的信息;
- <% .Link %> 是标签的链接,<% .TagName %>是标签的名称。
9.某个标签对应的文章翻页列表
名称:fn_article_page_by_tag
参数:page(当前页码)、limit(每页条数)、tagId(标签id)
演示代码:
<div class="box">
<% $tag:=fn_tag 1 %>
<h2>Tag Article: </h2>
<% $pageList:=fn_article_page_by_tag .page.Page 30 $tag.TagId %>
<ul>
<%range $pageList.Data%>
<li><a href="<% .Link%>"> <% .Title%> </a> </li>
<% end %>
</ul>
<p>
翻页: <% fn_pager .page.Page 30 $pageList.Count $cate.Link | str2html %>
</p>
</div>
代码说明:
- 取出栏目标签id=1的标签信息,赋值给 $tag 变量;
- 调用 fn_article_page_by_tag 函数,传入3个参数,后,赋值给$pageList变量;
- 使用 range 循环取出 $pageList.Data ,即文章列表;
- 调用翻页函数 fn_pager,显示翻页的效果。
10.某个月份对应的文章翻页列表
名称:fn_article_page_by_month
参数:page(当前页码)、limit(每页条数)、month(月份:202408)
演示代码:
<div class="box">
<h2>Month Article: </h2>
<% $pageList:=fn_article_page_by_month .page.Page 30 202407 %>
<ul>
<%range $pageList.Data%>
<li><a href="<% .Link%>"> <% .Title%> </a> </li>
<% end %>
</ul>
<p>
翻页: <% fn_pager .page.Page 30 $pageList.Count $cate.Link | str2html %>
</p>
</div>
代码说明:
- 调用 fn_article_page_by_month 函数,传入3个参数,后,赋值给$pageList变量;
- 使用 range 循环取出 $pageList.Data ,即文章列表;
- 调用翻页函数 fn_pager,显示翻页的效果。