![]() |
|
|||||||
![]() |
|
|
Thread Tools | Display Modes |
|
#1
IP: 114.238.108.166
|
|||
|
|||
|
五、常见操作
1、定义模版对象和引用模版 定义smarty变量 Smarty是一种模版语言,它会将*.php中定义模版对象输出到*.tpl模版中,显示到用户的面前。 定义smarty变量: $smarty->assign(template_variable, php_variable); 如何将定义的smarty变量指定给某个模版呢,语法为: func_display(template_name, $smarty); 例如根目录下的home.php的中最后几句: $smarty->assign('main', 'catalog'); //定义模版变量main,其实就是一个字符串’catelog’ $smarty->assign('cat', $cat); //定义模版变量cat,其实就是php的变量$cat $smarty->assign('location', $location);//定义模版变量location,其实就是php的变量$location func_display('customer/home.tpl', $smarty); //这里就是指定该smarty含有的变量将被home.tpl使用,并且home.tpl所引入的所有模版都是可以使用它的。 smarty变量常见使用方法 在模版中,要使用smarty语法,只需要在我们正常的语法外加上{}即可,操作非常简单。注释时使用{*内容*}。 输出字符串或者数值型变量 {$main} {*表示输出$main的内容’catalog’*} 输入结果:catalog 输出数组 和大多数语言一样,输出数组可以使用循环,下标等。 Php: $users=array(); $users[]=array( ‘name’ => ‘Bowen’, ‘gender’ => ‘boy’, ‘age’ => 25, ‘address’ => ‘Chongqing, China’ ); $users[]=array( ‘name’ => ‘Bourne, ‘gender’ => ‘boy’, ‘age’ => 28, ‘address’ => ‘Chongqing, China’ ); Tpl: <table> {foreach from=$users item=user key=index} <tr><td>name:</td><td>{$user.name}</td></tr> <tr><td>gender:</td><td>{$user.gender}</td></tr> <tr><td>age:</td><td>{$user.age}</td></tr> <tr><td>address:</td><td>{$user.address}</td></tr> <tr><td colapan=2></td></tr> {/foreach} </table> 直接输出Bowen的年龄:{Users.0.age} 其它循环语法: •Where {while $foo > 0} {$foo--} {/while} •Section •For {section name=foo start=10 loop=20 step=2} {$smarty.section.foo.index} {/section} {for $foo=1 to 3} <li>{$foo}</li> {/for} 定义smarty变量 出了在php中定义smarty变量,然后指定给模版外,在tpl中也可以定义变量,语法: {assign item=name value=’Bowen’} 使用这个变量:{$name} 输出:Bowen 比较判断 同其他语法,使用if elseif else if作为判断语法,创建的比较关键字或者比较字符见下表: 运算符 别名 语法示例 含义 对应PHP语法 == eq $a eq $b 等于 == != ne, neq $a neq $b 不等于 != > gt $a gt $b 大于 > < lt $a lt $b 小于 < >= gte, ge $a ge $b 大于等于 >= <= lte, le $a le $b 小于等于 <= === $a === 0 绝对等于 === ! not not $a 非 (一元运算) ! % mod $a mod $b 取模 % is [not] div by $a is not div by 4 取模为0 $a % $b == 0 is [not] even $a is not even [非] 取模为0 (一元运算) $a % 2 == 0 is [not] even by $a is not even by $b 水平分组 [非] 平均 ($a / $b) % 2 == 0 is [not] odd $a is not odd [非] 奇数 (一元运算) $a % 2 != 0 is [not] odd by $a is not odd by $b [非] 奇数分组 ($a / $b) % 2 != 0 例如: {if $name eq ‘Bowen’} <p>Hello, Boy</p> {else} <p>Hello, {$name}</p> {if} 数学计算 {math}可以让模板设计者在模板中进行一些数学运算。 例: {* $height=4, $width=5 *} {math equation="x + y" x=$height y=$width} 输出:9 {multi}可以让模板设计者在模板中进行乘法运算。 {assign item=price value=10} {assign item=amount value=2} {multi x=$price y=$amount assign=total} {$total} 输出:20 调试输出 当在后台定义了一些smarty模版变量后,特别是一些多元数组,我们想知道传递到前台的时候数组是怎样的,又不想用调试工具,那么,在前台,可以使用调试语法输出: {$variable_value|@debug_print_var} 引用模版 2、启用smarty调试 X-CART 系统自带有一种强大的smarty前台debug console,在启用之后,可以看到当前页面所加载的所有模版和所有模版变量的值,打开方法:登陆进入admin管理页面Settings->General settings找到Enable debugging console并且勾选启用。在浏览页面的时候,会发现如下对话框出现: 3、调用业务处理层文件 在x-cart 源代码中root/ include/func文件夹中包含了系统的业务处理处理文件,我们可以向C#引用命名空间一样,引用这些文件。 对func.cart.php的文件,引用方法如下: x_load(‘cart’); 这样,就可以在引用了该文件的*.php中使用func.cart.php中的任意一个方法了。 4、数据库操作 在开发中,不可避免的,要对数据库进行操作,对数据库操作的方法都在func.db.php这个文件中,因此我们只需要了解这个文件中有哪些常用的方法就可以了。 •db_query($query, $delayed_query_type = false) 该方法是一个万能的方法,可以执行mysql的一切查询语句,如增删改查,阐述$query为查询字符串,失败返回false,成功,反馈查询到的值。 •db_exec($query, $params = array()) 该方法同db_query,也是一个万能的查询方法。不过这个方法支持传递传输。更加的灵活。 例子一: 复制代码 $query = "SELECT * FROM table WHERE field1=? AND field2=? AND field3='\\?'" $params = array (val1, val2) query to execute: "SELECT * FROM table WHERE field1='val1' AND field2='val2' AND field3='\\?'" 复制代码 例子二: $query = "SELECT * FROM table WHERE field1=? AND field2 IN (?)" $params = array (val1, array(val2,val3)) query to execute: "SELECT * FROM table WHERE field1='val1' AND field2 IN ('val2','val3')" •func_query_first($query, $use_cache = FALSE, $limit_first = TRUE) 执行sql语句,保存查询结果到数据,列明为键值,并且返回数组的第一个元素。查询结果为空返回array()。 •func_query_first_cell($query, $use_cache = false, $limit_first = true) 执行sql语句,保存查询结果到数据,列明为键值,并且返回数组的第一个元素第一个单元格的值。查询结果为空返回false。 •func_array2insert ($tbl, $arr, $is_replace = false, $is_ignore = false, $delims = array()) 插入数据到指定的表。 •func_array2update ($tbl, $arr, $where = '', $skip_quotes = false) 更新指定表中的数据。 5、Session的使用 几乎所有的网站都会使用到session去保存站点的一些状态,身份等信息,x-cart也不例外,x-cart有自己的session使用方法。 注册session x_session_register("var"); $var = "some value"; $smarty->assign("var", $var); 清除session x_session_unregister("var"); 6、清理系统缓存 x-cart站点在运行过程中,会产生很多的缓存文件,包括模版缓存,cache, 第一种 第一种简单的方法就是在浏览器中访问:站点/cleanup.php?auth_code=XXXXXXXXXXXXX,例如: http://www.x-cart-plus.com/cleanup.p...Mt_cDfLv-BVf5W 在成功清理后,页面会输出: The compiled templates cache ('var/templates_c' directory) has been cleaned up. The X-Cart cache ('var/cache' directory) has been cleaned up. 第二种 还有一种方法就是管理员在后台页面进行清理操作。进入后台管理页面,Tools->Maintenance,找到该页面的Clear templates/X-Cart cache节点,点击clear即可。 第三种 当然更为粗暴但是有效的方法就是进入服务器,直接在站点晴空站点更目录的var文件夹。 六、开发环境 1、开发工具 操作系统:这个应该没有什么限制,windows xp及以上,本人使用的时windows 8。 代码编辑器:前台开发可以使用一般的文本编辑器,Nodepad++,sublime等,但是为了方便后台调试,可以用一些强大的SDK,例如Zend Studio, PhpStorm,VS.PHP。本人习惯使用VS.PHP,主要是界面美观。 数据库管理工具:Navicate。 2、调试环境 无论是使用Zend Studio, PhpStorm还是VS.php,都需要配置php的调试环境,这里就不细说了,百度、谷歌一下,可以看到很多。 Last edited by Hackettstown : 2015-05-28 at 10:39 PM |
![]() |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| How to Modify Zen Cart to Use External Images | 上海公司注册 | ZenCart | 0 | 2012-06-21 11:56 AM |
| 有关Zen Cart的一些常用操作 | yahoo | ZenCart | 0 | 2009-12-01 09:36 PM |
| How to Install an Zen Cart Template | topvip | ZenCart | 0 | 2009-08-23 05:35 PM |
| X-Cart Multiple Input Validation Holes Permit SQL Injection and Cross-Site Scripting | topvip | X-Cart | 0 | 2009-07-21 10:03 AM |
| x-cart Template Editing Guide for 4.1.x | topvip | X-Cart | 0 | 2009-04-15 11:42 PM |