X-Cart 学习笔记(四)常见操作

目录

X-Cart 学习笔记(一)了解和安装X-Cart

X-Cart 学习笔记(二)X-Cart框架1

X-Cart 学习笔记(三)X-Cart框架2

X-Cart 学习笔记(四)常见操作

 

五、常见操作

1、定义模版对象和引用模版

定义smarty变量

Smarty是一种模版语言,它会将*.php中定义模版对象输出到*.tpl模版中,显示到用户的面前。

定义smarty变量:

1
$smarty->assign(template_variable, php_variable);

如何将定义的smarty变量指定给某个模版呢,语法为:

1
func_display(template_name, $smarty);

例如根目录下的home.php的中最后几句:

1
2
3
4
5
6
7
$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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$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>

输出如下:

Name:

Bowen

Gender:

Boy

Age:

25

Address:

Chongqing, China

 

Name:

Bourne

Gender:

Boy

Age:

28

Address:

Chongqing, China

 

直接输出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并且勾选启用。在浏览页面的时候,会发现如下对话框出现:


模版信息
X-Cart 学习笔记(四)常见操作

变量信息

 X-Cart 学习笔记(四)常见操作

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,也是一个万能的查询方法。不过这个方法支持传递传输。更加的灵活。
例子一:

X-Cart 学习笔记(四)常见操作
   $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=‘\\?‘"
X-Cart 学习笔记(四)常见操作

 例子二:

   $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.php?auth_code=qskvt_oxdF0gqiafYrMt_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的调试环境,这里就不细说了,百度、谷歌一下,可以看到很多。

参考:http://www.chenxuanyi.cn/xampp-phpstorm-xdebug.html

             http://blog.csdn.net/a600423444/article/details/12720543

 

 

如有错误,请指出,共同学习,谢谢!

 

尊重作者,转载请说明出处。

X-Cart 学习笔记(四)常见操作

上一篇:Linux常用的几种基本命令 使用方法


下一篇:【shell脚本】远程主机批量传输文件auto_scp.sh