YZMCMS6.3版本已经发布很多天了。最近我才有些空闲时间,打算对我的网站程序进行升级。新版本改动还是蛮大的。由于我的网站对源码修改的地方比较多,所以升级很慢。
对于制作网站一直以来都是我的一个兴趣爱好。也没有系统的学习过网页编程。从ASP到PHP,一直以来都是通过自学,没老师教,半路出家啊。自学往往也是东一榔头西一棒槌的。很多东西不懂,理解起来也蛮吃力。那废话就说到这里,下面开始说正题。
新版本搜索页模板中出现了一个新的变量 $tag->total ,这个变量会显示本次搜索记录的总数量。刚开始我一直不怎么理解,怎么突然就出了一个$tag呢,我找了找搜索的代码中也没有出现$tag这个变量啊,没有定义怎么可能就直接用出来了呢,还能显示总数量,真是莫名其妙。
不懂也没办法,只能在实践中寻找真理了。于是我先在m:search标签前用 var_dump() 打印了一下 $tag 显示代码为:
object(yzm_tag)#7 (4) { ["tablename"]=> NULL ["page"]=> NULL ["total"]=> NULL ["db"]=> NULL }
可以看出在 m:search标签 之前$tag里的值都是空值,但已经有了 total 这个键名。 再在m:search标签后用 var_dump() 打印了一下,代码如下:
object(yzm_tag)#7 (4) { ["tablename"]=> NULL ["page"]=> object(page)#12 (8) { ["url":"page":private]=> string(69) "http://ddtt.54818.cn/search/index/init/modelid/0/q/cms/page/PAGE.html" ["total_rows":"page":private]=> string(1) "1" ["list_rows":"page":private]=> string(2) "10" ["total_page":"page":private]=> float(1) ["now_page":"page":private]=> int(1) ["parameter":"page":private]=> array(3) { ["modelid"]=> string(1) "0" ["q"]=> string(3) "cms" ["page"]=> string(4) "PAGE" } ["url_rule":"page":private]=> bool(false) ["page_prefix":"page":private]=> string(5) "list_" } ["total"]=> string(1) "1" ["db"]=> NULL }
已经有值了。由此可以看出,模板解析那里肯定定义了$tag这个变量。
通过查看yzm_tpl模板解析类文件 yzm_tpl.class.php 总算有了发现。在文件当中有个yzm_tag函数,函数里面就定义了 $tag = yzm_base::load_sys_class(\'yzm_tag\');。再通过上面我用var_dump() 打印出的代码可以看到 object(yzm_tag)#7 (4) 和 object(page)#12 (8) 。于是我打开 yzmcms标签类文件 yzm_tag.class.php 从代码开头就可以看到文件中定义了 $tablename, $page, $total, $db 四个公共变量。再打开 数据分页类 page.class.php 开头就看到了局部变量的定义
private $url; //当前URL private $total_rows; //一共多少条数据 private $list_rows; //每页显示记录数 private $total_page; //总的分页数 private $now_page; //当前页 private $parameter; //分页跳转的参数 private $url_rule; //URL规则 private $page_prefix; //URL分页前缀,默认为list_
这下全了,全都找到了出处。原来类中的变量还能这样调用,又学到了一招。以后做模板更方便了。
这半路出家就是半路出家啊,不懂的地方真多。写下本文,供以后温故知新。