在模板中可以插入变化的内容,我们把它叫做【变量】,变量名一般由英文、数字和下划线组成,在变量名之前加上“$”,比如:$title就是一个变量。在
AKCMS中变量又分为全局变量、页面变量、自定义变量三种:
1 【全局变量】是在任何模板、任何页面都可以调用的变量,通常为网站的一些基本信息,请参考文档:《全局变量列表》
2 【页面变量】只能在特定的页面使用,不同的页面对应不同的变量,比如在内容的正文页中可以使用$title代表内容的标题,在栏目页中这个变量就不存在,但是却多了一个$categoryname代表栏目名,所有页面变量请参考文档:《所有模版都可以用的全局变量》、《内容页模版变量》、《栏目页模版变量》、《主题页模版变量》、《单页模版变量》
3 【自定义变量】比较特殊,它不是由系统提供,而是站长自己创建的,自行指定变量名和内容,在模板中调用时需要加上“v_”前缀,以示与全局变量和页面变量的区分。比如,自己创建了一个“hello”的变量,在模板中可以使用$v_hello这个变量,请参考文档《自定义变量》
变量在模板中最常用的用法是直接显示,方法是在模板的前后加上<{和}>,比如:要在页面突出显示内容的题目(对应变量是$title)就这样写:
<h1><{$title}></h1>
如果要以红色显示自定义变量$v_hello就这样写:
<span style='color:red'><{$v_hello}></span>
在调用模板函数时,也可以将变量作为参数传入,比如:
<{getitems var1=$test1}>
也可以用多个变量组合出一个参数,比如:
<{getitems var1="$test1-$test2"}>
//如果test1=123,test2=456,那么最终传入的参数值是var1=123-456
上例中的中划线如果变成下划线会多一些麻烦,因为下划线也是合法的变量名字符,所以系统会把$test1_$test2当成一个变量,解决方法是在一个变量名的前后加上“`”符号:
<{getitems var1="$test1_$test2"}>
//错误
<{getitems var1="`$test1`_`$test2`"}>
//正确
AKCMS全局变量
本文档介绍了所有能用于模板的全局变量,所有AKCMS的模板不管是什么类型的页面都可以调用以下变量:
$charset 字符编码,一般是gbk或者utf-8,可直接用于<meta>中,不过考虑到字符编码一般很少改变,一般用到的机会不多。
用法举例:<meta http-equiv='Content-Type' content='text/html; charset=<{$charset}>' />
$thetime 当前时间的unix时间戳(如果生成静态文件后,这个时间就不会变化了,就代表生成文件时候的时间),这个时间戳应用了当前系统的时差设置,比如如果当前时区是+8,则比标准时间多8 * 3600秒,此变量一般与javascript配合使用。
$page 这是个特殊的变量,如果是动态页它代表了URL中page参数的值(?page=123);如果是静态页则代表当前分页的页码;如果没有page参数或page参数的值不是整数,则取默认值:1。
$home 用于指向当前网站的首页,大部分情况下网站都安装在根目录下,所以可以用/来代表相对路径。但也有时候模板的制作者不知道站长会把网站安装在哪个子目录下,这时就用到这个了$home了,在调用css、js时可以用到
用法举例:
<script language='javascript' type='text/javascript' src='<{$home}>/js/jquery.js'></script>
<link rel='stylesheet' href='<{$home}>/css/common.css' />
访客变量
浏览器传入的内容也可以作为变量获得,我们称之为访客变量。绝大多数变量在对应页面已经有安全的替代,不到万不得已不要调用用户传入的变量,除非你很清楚你在做什么。警告:严禁直接调用未经处理的原始内容,这相当于自杀!
<{$get_d_abc}>
<!--严禁直接调用,上面这样的写法极为危险!!-->
$get_abc 通过GET方式传入的abc变量(内容经过htmlspecialchars处理)
$get_d_abc 通过GET方式传入的abc变量的原始值
$get_u_abc 通过GET方式传入的abc变量(内容经过urlencode处理)
$cookie_abc 通过COOKIE传入的abc变量(内容经过htmlspecialchars处理)
$cookie_d_abc 通过COOKIE传入的abc变量的原始值
$setting_abc 系统设置的值,用于二次开发(abc代表设置项的key)
AKCMS内容页变量
$template 当前使用的模板
$itempage 当前正文分页的页码,如果未启用正文分页,则此变量始终为1
$url1 当前页第1套模板对应的URL
$url2 当前页第2套模板对应的URL
$url3 当前页第3套模板对应的URL
$url4 当前页第4套模板对应的URL
$url 同$url1,是它的别名
$html 如果当前内容按照设置需要生成HTML则此变量为1,否则为0
$id 当前内容ID
$title 题目(如果题目被指定样式和颜色,则题目会被加上<font><b>等)
$texttitle 无样式的题目(通常情况下与$title一样,但不受题目样式的影响,因此适用于<title></title>中:<title><{$texttitle}></title>
$shorttitle 短题目(短题目是一个特殊的字段,如果未开启并特别指定,则他的内容与$title是一样的,如果指定了则以指定的为准,一般用于宽度受限制的显示位置)
$textshorttitle 无样式短题目($texttitle 与 $shorttitle的结合)
$data 正文内容
$keywords 关键词。用逗号分隔的一组词语,直接输出就是纯文字的显示,通常可以结合getlists调用为每个词加上指定链接。这里不详细介绍getlists的用法,请参见:《对列表的调用getlists》。假设一篇内容的关键词是“php,mysql,服务器”,下面的调用就是给每个词加上搜索链接:
<{getlists list=$keywords template="<a href='http://www.baidu.com/s?wd=[iteminurl]'>[item]</a><br />"}>
调用的结果是:
<a href='http://www.baidu.com/s?wd=php'>php</a><br /><a href='http://www.baidu.com/s?wd=mysql'>mysql</a><br /><a href='http://www.baidu.com/s?wd=%B7%FE%CE%F1%C6%F7'>服务器</a><br />
$tags TAG,参见keywords
$category 栏目的数字ID,这个变量几乎不会直接使用,两个常见的用法:
1 通过和Javascript结合实现导航栏当前栏目高亮,在生成导航栏时可以为导航栏设置ID,通过<{$category}>可以得到当前的栏目ID,通过javascript就可以找出当前的栏目,然后加上高亮等效果。
2 调用数据时以当前栏目作为参数,可以获取当前栏目相关内容、上一篇下一篇等。
用法举例:
<{getitems category=$category .....其他参数....}
$categoryname 栏目名
$categoryurl 栏目首页URL,可直接用于面包屑导航中的<a>标签,
用法举例:当前位置:<a href='<{$categoryurl}>'><{$categoryname}></a>
$categorypath 栏目目录
$categoryalias 栏目别名
$categorydescription 栏目描述
$categorykeywords 栏目关键词
$categoryup 上级栏目的ID
$section 主题ID
$sectionname 主题名
$sectionalias 主题别名
$sectiondescription 主题描述
$sectionkeywords 主题关键字
$aimurl 目标地址
$digest 摘要
$editor 编辑
$author 作者
$price 价格
$author_encode 执行过urlencode()的作者
$source 来源
$original_picture 原始图片地址(不做任何处理)
$picture 图片地址,可直接用于<img>
$pageview 总访问量
$y 内容创建时间的“年”,如“2014”
$m 内容创建时间的“月”,如“06”
$d 内容创建时间的“日”,如“31”
$h 内容创建时间的“时”,如“08”
$i 内容创建时间的“分”,如“08”
$s 内容创建时间的“秒”,如“08”
$dateline 内容创建时间的时间戳
$last_y 内容最后修改时间的“年”,如“2014”
$last_m 内容最后修改时间的“月”,如“02”
$last_d 内容最后修改时间的“日”,如“08”
$last_h 内容最后修改时间的“时”,如“22”
$last_i 内容最后修改时间的“分”,如“02”
$last_s 内容最后修改时间的“秒”,如“21”
$draft 是否是草稿(0,1)(草稿代表未正式发布)
$commentnum 评论数
$scorenum 打分次数(此字段闲置)
$totalscore 总得分(此字段闲置)
$avgscore 平均分(此字段闲置)
$filename 指定文件名
$attach 附件数
$orderby 排序值
$orderby2 排序值2
$orderby3 排序值3
$orderby4 排序值4
$orderby5 排序值5
$orderby6 排序值6
$orderby7 排序值7
$orderby8 排序值8
$pv1 计数器1
$pv2 计数器2
$pv3 计数器3
$pv4 计数器14
$string1 字符串1
$string2 字符串2
$string3 字符串3
$string4 字符串4
$subtitle 正文分页小标题
$pagedata 正文分页当前页的内容
$pagenum 正文分页的页数
$module 所属模块ID。这个变量如果直接显示没有意义,常用于getitems等调用时作为参数传入(6.1+)
$currenturl 当前页的URL
$_ext(扩展字段) 当前文章的自定义的扩展字段变量以前缀_区分,如果自定义变量名叫abc,则实际在模板中的变量就叫$_abc 关于扩展字段的详细介绍请参见《模块》
AKCMS栏目页模板中可以调用的变量如下:
$category
当前栏目的数字ID
$alias
栏目别名
$categoryname
栏目名
$path
栏目对应目录
$fullpath
栏目完整目录(可能含有上级目录)
$data
栏目的内容字段
$subcategories
所属下级栏目id组成的数组
使用数组变量比较复杂,需要一点基础,以下为用法举例:
<{foreach from=$subcategories }>
<{$cid}><br />
<{/foreach}>
请参考smarty模板引用的foreach
$categoryup
上级栏目id
$orderby
排序值
$keywords
栏目关键字
$description
栏目描述
$items
栏目所属(文章)内容的数量
$allitems
栏目所属(文章)内容的数量(含子栏目)
$pv
栏目页的访问量
$html
是否生成静态页(0,1)
$url
栏目首页URL,可安全用于<a href="">中
$picture 栏目图片
AKCMS单页变量
$template 当前使用的模板
$id 单页数字ID
$title 单页题目(注意:不是单页名,而是题目)
$data 内容
$keywords 关键词。用逗号分隔的一组词语,直接输出就是纯文字的显示,通常可以结合getlists调用为每个词加上指定链接。这里不详细介绍getlists的用法,请参见:《对列表的调用getlists》假设一篇内容的关键词是“php,mysql,服务器”,下面的调用就是给每个词加上搜索链接:
<{getlists list=$keywords template="<a href='http://www.baidu.com/s?wd=[iteminurl]'>[item]</a><br />"}>
调用的结果是:
<a href='http://www.baidu.com/s?wd=php'>php</a><br /><a href='http://www.baidu.com/s?wd=mysql'>mysql</a><br /><a href='http://www.baidu.com/s?wd=%B7%FE%CE%F1%C6%F7'>服务器</a><br />
$pageview 访问量
$y 内容创建时间的“年”,如“2014”
$m 内容创建时间的“月”,如“06”
$d 内容创建时间的“日”,如“31”
$h 内容创建时间的“时”,如“08”
$i 内容创建时间的“分”,如“08”
$s 内容创建时间的“秒”,如“08”
$dateline 内容创建时间的时间戳
$last_y 内容最后修改时间的“年”,如“2014”
$last_m 内容最后修改时间的“月”,如“02”
$last_d 内容最后修改时间的“日”,如“08”
$last_h 内容最后修改时间的“时”,如“22”
$last_i 内容最后修改时间的“分”,如“02”
$last_s 内容最后修改时间的“秒”,如“21”
$filename 指定文件名
$description 描述
主题页变量
$section 主题数字ID
$sectionname 主题名
$alias 主题别名
$orderby 主题排序
$keywords 主题关键字
$description 主题描述
$items 主题下述内容数量
AKCMS自定义变量
akcms支持自定义变量,什么是变量呢?不懂编程的朋友可能搞不懂这个术语,不过没有关系,您不需要懂,您把它理解为一些网站名,联系方式,备案号之类的页面上到处会显示的却偶尔会变化的东西。比如:您原来在每个模板中都有这样的代码:<title>阿猫阿狗宠物店</title>网站也一直运行良好,可是突然有一天,老板突发灵感要把网站名改成“鼓捣猫ing宠物店”这下可麻烦了,你得挨个模板去改。好不容易改完了,顾客抗议新名字歧视狗了老板又下令再把网站名改成“阿猫阿狗宠物店”……
这种情况下,你想必掐死老板的心都有,这种情况下变量功能就派上用场了,首先在变量管理那里新增一个叫wangzhanming的变量,他的值是“阿猫阿狗宠物店”(不含引号),然后把模板中的代码改成<title><{$v_wangzhanming}></title>。保存,重新生成页面就看到效果了。以后再想换网站名字就简单了,在变量管理中把wangzhanming改成“鼓捣猫ing宠物店”,然后批量重新生成网页就行了。回过头来说说变量名,其实不一定是wangzhanming,你也可以起名叫sitename,也可以叫dianhua、tel、beian等等,只要在模板调用的时候对应上就行了,如果变量名是tel,那就用<{$v_tel}>,如果变量名是beian,那就用<{$v_beian}>,看出规律了吧?
变量中的“{$homepage}”会被替换成首页。(4.0.3新功能)