AKCMS模板函数标签的使用

来自站长百科
跳转至: 导航、​ 搜索

导航: 返回上一页

AKCMS的模板中可以编写标签调用网站内容,这些标签如下:

getitems标签[ ]

getitems函数是AKCMS中使用最广泛的函数,可以这么说,把这个函数弄明白了,就掌握了80%的AKCMS的使用。

  • 公用参数(get***系列函数都支持的参数)
start:从第几篇文章开始,start="3"表示,抛弃符合条件的前2篇文章,从第3篇开始取,默认值为1
num:取出的文章数,默认值是10
colspan:子循环的次数,默认是没有子循环
overflow:子循环结束后插入的内容,与colspan结合可以实现很多效果,比如:共显示20篇文章每5行中间插入一根线就这样写:num="20" colspan="5" overflow="<hr />"
expire:缓存有效期,单位秒,expire="3600"表示缓存1小时,1小时内相同属性的标签不再查询数据库
length:题目长度限制,单位字节,比如:length="20"代表题目截取10个汉字或20个字母,如果是半个汉字将被舍弃
strip:题目被截取后显示的字符,比如可以指定strip="..."就表示如果题目被截断了就加上个省略号
bandindex:绑定分页,分页列表页的主内容区域必须指定bandindex="1"才能正常使用分页功能
emptymessage:如果什么内容也没有取到,则显示这个值,emptymessage="未找到符合条件的文章"
year:可以取得某年的文章
month:可以取得某年某月的文章,如果year为空则此属性无效
day:可以取得某年某月某日的文章,如果year或month为空则此属性无效
  • 参数
id:指定ID,可以是多个,比如:id="1,6,7",只取1,6,7这三篇文章
skip:跳过指定ID,可以是多个,比如:skip="2,3",则跳过2,3这两篇文章
category:栏目ID,可以是多个,比如:category="1,2,3,4"代表从1,2,3,4栏目取内容
skipcategory:跳过的栏目ID,可以是多个,比如:skipcategory="2,3"代表跳过栏目2,3的内容
includesubcategory:是否取下级栏目的数据,如果为1则表示下级栏目的内容也会被列出来,默认为0
section:主题ID,可以是多个,比如:section="1,5,6"代表从1,5,6主题取内容
skipsection:跳过的主题ID,可以是多个,比如:skipsection="4,5"代表不取4和5这两个主题的内容
orderby:排序方式(可选值:id(序号),orderby(排序值),time(时间),pv(页面浏览量),random(随机)(SQLite版random不生效),默认是从小到大的顺序,如果想从大到小,则在后面加上一个 _reverse,比如:orderby="orderby_reverse"按照排序值从大到小排列,orderby="pv_reverse"按照访问量从大到小排列)也支持多个排序方式,中间用逗号分开,比如:orderby="orderby_reverse,id"意思是先按排序值从大到小排列,如果排序值相同则按ID从小到大排列。
template:显示模板(默认:"[title]
")
page:显示第一页,当这个参数指定的时候,start参数就失效
last:限制取大于此值的文章(用于上一篇下一篇功能),比如有ID有1,2,3,4,5等文章,last="3"则会取出4,5这两篇文章
next:限制取小于此值的文章,比如有ID有1,2,3,4,5等文章,last="3"则会取出1,2这两篇文章
where:指定的条件将附到查询语句的最后,比如:where="id>100",则只有ID号大于100的才会被显示出来。这是高级功能,仅供对数据库比较熟悉的用户使用
newinseconds:指定只选出几秒内新建的文章,比如:newinseconds="3600"则只取最近一小时录入的文章
editinseconds:指定只选出几秒内修改的文章,比如:editinseconds="3600"则只取最近一小时修改过的文章
timelimit:是否显示“未来”的文章,比如现在是2010年1月24日10:27:00,默认的2010年2月的文章也会显示出来,如果此属性设置为1,则不显示“未来”的文章
keywords:只显示包含指定词的文章,比如:keywords="google"则将题目或关键字字段中包含google的文章
order:选取排序值字段大于等于指定值的文章,比如:order=5,则只显示排序值大于等于5的文章
picture:选取文章是否包含缩略图,1包含,-1不包含,0忽略
nopicture:默认图片,当获取某篇未指定缩略图的文章的缩略图时,会获得这个默认图片的地址
head:截取正文头部的字数,通过[texthead]获取(2.7正式版新增参数)
  • 模板标签(template参数中可以使用以下标签,最终会被替换为对应内容,下同)
[title]题目

以下是发表时间的格式

[y]年
[m]月
[d]日
[h]时
[i]分
[s]秒
[sy]短格式年,如2007年则显示为07
[sm]短格式月,如05月则显示为5
[sd]短格式日,如08日则显示为8
[last_y]最新编辑年
[last_m]最新编辑月
[last_d]最新编辑日
[last_h]最新编辑时
[last_i]最新编辑分
[last_s]最新编辑秒
[last_sy]最新编辑短格式年
[last_sm]最新编辑短格式月
[last_sd]最新编辑短格式日
[url]url地址
[texttitle]无样式题目
[textshorttitle]无样式短题目
[title]题目
[shorttitle]短题目
[aimurl]目标地址
[pv]访问量
[categoryid]栏目id
[category]栏目名
[sectionid]主题id
[section]主题名
[categorypath]栏目的文件夹名
[categoryhomepath]已经计算好的栏目路径
[categoryup]父栏目的ID
[itemid]文章ID号
[id]序号,1-N
[picture]缩略图地址
[digest] 摘要
[text]正文内容
[texthead]正文的头部截取(2.7正式版新增标签)

getindexs标签[ ]

getindexs标签主要用于调用分页列表

  • 参数
page=$page
ipp=$ipp
total=$total

这3个是必写的,如果是栏目分页还要加上:

category=$category

如果是搜索分页还要加上:

keywords=$keywords
template
baseurl
  • 模板
[indexs]列表
  • 举例
<{getindexs baseurl="/akcms_search.php?keywords=[keywords]&category=[category]" keywords=$keywords category=$category page=$page ipp=$ipp 
total=$total template="[indexs]"}>

getcategories标签[ ]

getcategories标签主要用于调用AKCMS栏目

  • 参数
id:指定的栏目ID
skipid:跳过的栏目ID,支持多个
rootcategory:上级栏目号
skipsub:跳过二级分类
  • 模板
[url]:栏目的地址
[category]:栏目的名字

举例:

<{getcategories num="30" skipid="1" expire="600" template="<li><a href=()[url]()>[category]</a></li> "}>

getcomments标签[ ]

getcomments主要用于调用评论

  • 参数
template:模板
itemid:对应文章ID
orderby:排序方式
  • 模板
[itemid]对应文章ID
[username]用户名
[title]题目
[message]内容
[dateline]时间
[ip]IP地址
[secretip]最后一位隐藏的IP地址
[id]:排序ID
[y]年
[m]月
[d]日
[h]时
[i]分
[s]秒
[sy]短格式年
[sm]短格式月
[sd]短格式日

getlists标签[ ]

getlists标签主要用于获取自定义列表

  • 参数
template:显示模板,如果不指定此参数默认为“[item]<br>”
sc:分隔符,默认为“,”(半角)
list:列表,不指定无法工作
num:显示数量,默认为-1,代表不限制
  • 模板
[id]:序号
[item]:项目
[iteminurl]:经过urlencode处理过的项目(如果要放到URL中可以使用这个)
[iteminhtml]:经过htmlspecialchars处理过的项目

例一:

在模板中加入以下代码:

<{getlists num="2" list="1,2,3,4,5,6,7"}>

实际上显示的是:

1<br>2<br>

因为没有指定模板,所以默认取[item]
,又因为我们设定了num="2",所以只显示前两项。

例二:

假设莫篇文章有四个关键字:曼联,英超,意甲,中超。在文章正文页模板item_display.htm中加入调用全部关键字的标签:

<{getlists template="[item] " list=$keywords}>

显示在网页中的最终代码是:

曼联 英超 意甲 中超 

如果想给每一个关键字加上链接,可以这样写标签:

<{getlists template="<a href=()/tag/[item]/()>[item]</a> " list=$keywords}>

显示的最终代码:

<a href="/tag/曼联/">曼联</a> <a href="/tag/英超/">英超</a> <a href="/tag/意甲/">意甲</a> <a href="/tag/中超/">中超</a> 

或者把标签这样写:

<{getlists template="<a href=()/tag/[iteminurl]/()>[item]</a> " list=$keywords}>

显示的最终代码:

<a href="/tag/%C2%FC%C1%AA/">曼联</a> <a href="/tag/%D3%A2%B3%AC/">英超</a> <a href="/tag/%D2%E2%BC%D7/">意甲</a> <a href="/tag/%D6
%D0%B3%AC/">中超</a> 

注意:类似“/tag/曼联/”这样的URL需要您在rewrite中做好设置

akinclude标签[ ]

akinclude标签主要用于包含一个文件

此方法与include几乎一样,只是多了对expire参数的支持。

例如:

<{akinclude file="abc.htm" expire="3600"}>

这样就代表引用abc.htm这个模板并把结果缓存下来,一小时(3600秒)内再次请求页面将使用缓存节省时间。

注意:只有指定了expire这个方法才有效。因为当不指定expire参数时,此方法效率比直接使用include低。

akincludeurl标签[ ]

akincludeurl标签主要用于包含一个远程网页的内容

此方法远程请求URL,并将内容包含进来。

比如:

<{akincludeurl url="http://www.baidu.com/" expire="3600"}>

这就在页面上显示出了百度的首页,第一次显示将稍微慢一些,因为服务器需要在后台请求百度的服务器一次。因为缓存了3600秒,所以,第二次显示速度就非常快了,不用等待。

注意:使用这个函数的页面如果是动态访问且访问量大一定要加上expire属性,否则会占满服务器的线程,现象是:服务器CPU占用不高,但是 Apache无法访问,线程都被占满。这不是akcms的缺陷,依赖外部数据源的程序都有这个问题。