1.系统结构
思途CMS系统手机5.0版在框架kohana3.2基础上开发,思途根据自身需求对底层代码进行了一定的改动并集成了思途自己的模板机制,客户在进行模板开发之前需要熟悉kohana框架的基础知识,并了解我们的模板语法。
2. 基础控制器和视图
(1)控制器Stourweb_Controller
该控制器对部分网络参数和配置进行了预处理,并集成了思途的模板功能,任何各定义的控制器都需要继承自该类。
(2) 视图类Stourweb_View
该类具体实现对模板的解析,一般不需要直接使用,可以通过研究该类了解思途的模板语法。
(3)添加控制器
添加控制器除需要继承自Stourweb_Controller外,还需要在/application/route.php的最前面添加路径解析,防止访问该控制器时被转到目的地首页。
例如:
Route::set('mycontroller', 'mycontroller'/<param>', array('param' => '[a-zA-Z0-9]+'))
->defaults(array(
'action' => 'index',
'controller' => ‘mycontroller'));
3.模板语法(控制器端)
(1) 模板目录
默认模板目录是default, 即/application/views/default/, 自定义模板目录与default同级,名称可以随意,内部结构和default里的结构完全一致,系统会优先调用自定义模板里的模板,如果该模板不存在,则调用默认模板里的同名文件。
(2) 变量赋值assign
assign($key,$value): 将变量赋予模板,全局变量或常量可以不用
例子: $this->assign(‘lines’, $linelist);
(3) 使用模板 display
display($tpl): 显示模板, 模板后缀名必须是php, $tpl为模板相对路径(不带文件后缀),即相对”/application/views/模板目录/”的路径。
例子: $this->display(‘car/show’) 调用的是”/application/views/模板目录/car/show.php”
(4) 参数params
$this->params[$key]: 获取url标准参数。url参数可以使用GET的形式传输,但一般建议使用斜线分割的方式进行传输,也就是/key/value的形式。
例子:对于地址 www.lvyou.com/phone/line/show/id/5/attrid/6, 其中phone是手机版目录,line是控制器,show是action, 参数有id和attrid, 值分别为5,6 , 这时不能通过超全局变量$_GET来获取他们的值,而是用$this->params[‘id’]和$this->params[‘attrid’]来获取
4. 模板语法(视图篇)
(1) 注释自动替换:
在模板上的html注释,模板引擎会自动替换为空.
例如: <!—这是注释--->在模板解析的时候会自动替换为空
(2) 变量和数组
变量可以直接调用
例如:
{$price} 普通变量
{TYPEID} 常量
{$info[‘line’][‘name’]} 数组
(3) 引用模板
可以采用template ,include或request语法进行引用其它模板, 其中template和include直接引用的模板,而request引用的是控制器, 所有当前的控制器的变量在request中并不能使用
例如: {template ‘public/header’} 或者 {request ’public/header’}
(4) php单行表达式解析
主要用于解析单行的php
例如: {php echo date(‘Y-m-d’);}表示输出当前时间
(5) 多行php语法解析
采用{php}语法体{/php}实现多行php语法解析.
例如: {php}
for($i=0;$i<10;$i++)
{
echo $i;
}
{/php}
(6) if else else if 判断语法
用于逻辑判断
例如:
{if $islogin>0}
<li>用户名:{$username}</li>
{elseif $islogin ==0}
<li>请登陆</li>
{else}
<li>请登陆</li>
{/if}
(7) 循环标签loop,
用于循环数组, 功能类似foreach, 内置变量$n表示当前索引,从1开始。第一个参数是要循环的数组,第二个参数是key或value(假如没有第三个参数,那就是value), 第三个参数是value ;
例如:
用法1:
{loop $data $v}
<li {if $n==2}class='on'{/if}>
姓名:{$v}
</li>
{/loop}
用法2:
{loop $data $k $v}
<li {if $n==2}class='on'{/if}>
index:{$k} 姓名:{$v}
</li>
{/loop}
(8) 函数解析
可以直接调用全局函数:
{func($param1,$param2)}
(9) 静态函数解析:
{Common::func($param1,$param2))}
(10) CSS、JS调用
Common::css($files,$minjs = false, $default = true): 引用css文件
$files是css文件名或路径,多个文件,需要使用逗号分割。
$minjs表示是否将多个css文件混合
$default表示是否调用默认的css文件,如果为false, 表示直接调用$files的绝对路径,此时$files里的文件必须是路径形式,即相对于根目录的绝对路径。
当$default为true时,该函数会优先调用客户自定义模板目录的css, 再调用标准的css。
假设客户在/application/views/里新建了一个模板目录mytemplate, 并且在/application/bootstrap.php 里将$cfg_default_template名称指定为/mytemplate/, 那么这个函数会优化查找/public/mytemplate/css目录的同名文件,如果不存在,则会调用/public/mytemplate里的同名文件。
例如: {Common::css('amazeui.css,style.css,extend.css')}
Common::js($files,$minjs=false,$default=true} : 使用方法同Common::css
(11) 标签解析:
标签的主要作用是可以直接调用数据库数据或其他数据,而不需要在控制器里先assign后才使用。所有标签都定义在/taglib目录里,思途已经预定义了20多个常用的标签,可以直接使用。
标签就是一个只包含静态函数的类,名称为Taglib_Xxx, 里面的函数就是读取数据,并默认将返回的数据赋予$data变量,这样就可以在该标签里直接像使用其他常规变量一样使用这个$data变量,如果希望返回的变量名称不是$data, 则使用return参数来指定。
标签的模板函数为public static func($params)的形式,即只带一个参数,$params里包含了除action和return的所有参数,我们根据这些参数来读取数据。 函数内部没有特殊的规则要求,但一定要返回数据。标签里也可以定义其他函数供内部使用。
例如:
{st:标签名 action=”方法名” row=”参数1” limit=”参数2” return=”data” }
{loop $data $v}
{$v}
{/loop}
{/st}
赞
0
有一点帮助
0
没有帮助
参与评论