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的缺陷,依赖外部数据源的程序都有这个问题。