本文介绍RichCMS的页面自带变量,在html模板上,页面变量与模板函数会配合使用。
文章《RichCMS模板使用教程一:基础篇》中的内容,都是页面变量,比如可以使用以下形式显示网站的title信息:
<title><% .config.Title %></title>
一、栏目页(文章翻页列表页)
自带变量:
- category
比如可以通过一下方式,显示栏目的TDK信息。
<title><% if .category.Title%><% .category.Title%><%else%><% .category.CateName%><%end%></title>
<meta name="keywords" content="<% .category.Keywords %>" />
<meta name="description" content="<% .category.Description %>" />
代码说明:
- 如果设置有此栏目的 title信息,则显示 title,否者,显示栏目的中文名。
- 显示栏目的Keywords
- 显示栏目的Description
栏目页结构:
type Category struct {
CateId int //栏目id
CateName string //中文名称
CateEName string //英文名
ParentId int //上级id
RootId int //根id
Dept int //层级
CategoryType int //类型
RedirectUrl string //跳转地地址
State int //状态
Title string //SEO 标题
Keywords string //SEO keywords
Description string //SEO说明
Link string //链接地址
}
二、文章详情页
自带变量
- article
例子1:
<title><%if .article.SeoTitle%><%.article.SeoTitle%><%else%><%.article.Title%><%end%></title>
<meta name="keywords" content="<% .article.Keywords %>" />
<meta name="description" content="<% .article.Description %>" />
代码说明:
- 如果设置有此栏目的 SeoTitle 信息,则显示 SeoTitle,否则显示文章标题
- 显示栏目的Keywords
- 显示栏目的Description
例子2:
<% $cate:=fn_category .article.CateId %>
<div class="details-wrapper">
<div class="post-info"></div><span class="post-info">作者:<% .article.Author %></span>
<div class="post-info">|</div><span class="post-info">时间:<% fn_datetime_format .article.Updated%></span>
<div class="post-info">|</div><a href="<% $cate.Link %>" class="post-info when-link">栏目:<% $cate.CateName%></a>
<div class="post-info">|</div><a href="<% .article.MonthLink %>" class="post-info when-link">归档:<% .article.Month %></a>
</div>
代码说明:
- 显示文章的作者,更新时间,等信息
- 其中文章所在栏目信息 $cate ,通过函数 fn_category,参数文章的cateId( 栏目Id)获取;
例子3:
<% str2html .article.Content %>
代码说明:
- 显示文章的正文;
例子4:
<% $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 函数,传递文章的标签参数 .article.Tag 获取;
- 遍历显示;
文章详情结构:
type ArticleDetail struct {
Id int64 //文章id
CateId int //分类id
ParentId int //父分类id
RootId int //根分类id
CateName string //最终分类名
Uid int64 //发布人id
Username string //发布人昵称
Title string //标签
Photo string //图片
Content string //内容
Author string //作者
Tag string //标签1,2,3
Month int //月分
State int //状态
IsHot int //是否热门
SeoTitle string //seo
Keywords string //seo
Description string //seo
IsComment int //是否可评论
IP string //IP
Updated int //更新时间
Created int //入库时间
SimpleTag []*SimpleTag //展示用的标签列表
MonthLink string //月份的地址
}
三、单页
自带变量:
- page
例子1:
<title><%if .page.Title%><%.page.Title%><%else%><%.page.Name%><%end%></title>
<meta name="keywords" content="<% .page.Keywords %>" />
<meta name="description" content="<% .page.Description %>" />
代码说明:
- 如果设置有此单页的 Title 信息,则显示 Title,否则显示单页名称
- 显示栏目的Keywords
- 显示栏目的Description
例子2:
<div class="entry-content post-content" style="padding:4px 16px;">
<%str2html .page.Content %>
</div>
代码说明:
- 显示单页的内容,使用str2html 转换为html格式;
单页的结构:
type SinglePage struct {
PageId int //id
Name string //名称
Remark string //备注
Content string //页面内容 > html
RouteUrl string //路由地址
Title string //seo
Keywords string //seo
Description string //seo
State int //状态
Views int //点击量
Updated int //更新时间
Created int //创建时间
}
三、标签页
自带变量:
- tag
例子1:
<title><% if .tag.Title%><% .tag.Title%><%else%><% .tag.TagName%><%end%></title>
<meta name="keywords" content="<% .tag.Keywords %>" />
<meta name="description" content="<% .tag.Description %>" />
代码说明:
- 如果设置有此tag页的 Title 信息,则显示 Title,否则显示名称
- 显示栏目的Keywords
- 显示栏目的Description
例子2:
<% $tag:=fn_tag .tag.TagId %>
<a href="<% $tag.Link %>"><% $tag.TagName%></a>
代码说明:
- 使用 fn_tag 函数获取 tag的详细信息,赋值给 $tag;
- 显示 tag的链接和中文名称
例子3:
<% $pageList:=fn_article_page_by_tag .page.Page 30 $tag.TagId %>
<%range $pageList.Data%>
<article class="col-sm-4">
<div class="card card-full hover-a mb-module">
<div class="ratio_360-202 image-wrapper">
<a href="<%.Link%>">
<%if .Photo%>
<img src="<%.Photo%>" class="img-fluid article-photo" alt="<%.Title%>">
<% else %>
<img src="/static/front/site/img/photo.png" class="img-fluid article-photo" alt="<%.Title%>" >
<%end%>
</a>
</div>
<div class="card-body">
<h3 class="card-title h2 h3-sm h4-md h3-lg">
<a href="<% .Link%>"><% .Title%></a>
</h3>
<div class="card-text mb-2 text-muted small">
<time class="news-date" datetime="<% fn_datetime_format .Created%>"><% fn_datetime_format .Updated%></time>
</div>
<p class="card-text"></p>
</div>
<div class="gap-05"></div>
</div>
</article>
<% end %>
<div>
<% fn_pager .page.Page 30 $pageList.Count $tag.Link | str2html %>
</div>
代码说明:
- 使用 fn_article_page_by_tag 函数获取和当前标签相关的所有文章列表,赋值给 $pageList
- 遍历 $pageList中的文章信息
- 使用 fn_pager 显示标签页的文章翻页列表
标签的结构:
type Tag struct {
TagId int64 //标签id
TagName string //名称
TagMatch string //匹配
Title string //seo
Keywords string //seo
Description string //seo
State int //状态
Updated int //更新时间
Created int //创建时间
Link string //链接地址
}
标签对应文章列表的结构:
// TagList 标签列表
type TagList struct {
ID int64 //自动
TagID int64 //标签ID
OID int64 //文章ID
CateId int //文章对应的分类ID
Title string //标题
Description string //文章简介
Photo string //图片
Author string //作者
State int //状态
TagIds string //多个标签的回写值
Created int //文章的生成时间
Link string //文章的链接
}