目录

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

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

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

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

五、常见操作

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>

输出如下:

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

模版信息

变量信息

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.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 学习笔记(四)常见操作的更多相关文章

  1. ThinkPHP 学习笔记 ( 四 ) 数据库操作之关联模型 ( RelationMondel ) 和高级模型 ( AdvModel )

    一.关联模型 ( RelationMondel ) 1.数据查询 ① HAS_ONE 查询 创建两张数据表评论表和文章表: tpk_comment , tpk_article .评论和文章的对应关系为 ...

  2. python学习笔记(四)-文件操作

    文件读写"""一.文件打开有3种方式 1.读 r #如果打开的文件的时候没有指定模式,那么默认是读 读写模式 r+,只要沾上r,文件不存在的时候,打开都会报错 2.写 w ...

  3. openresty 学习笔记四:连接mysql和进行相关操作

    openresty 学习笔记四:连接mysql和进行相关操作 毕竟redis是作为缓存,供程序的快速读写,虽然reidis也可以做持久化保存,但还是需要一个做数据存储的数据库.比如首次查询数据在red ...

  4. tensorflow学习笔记——使用TensorFlow操作MNIST数据(1)

    续集请点击我:tensorflow学习笔记——使用TensorFlow操作MNIST数据(2) 本节开始学习使用tensorflow教程,当然从最简单的MNIST开始.这怎么说呢,就好比编程入门有He ...

  5. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

  6. java之jvm学习笔记四(安全管理器)

    java之jvm学习笔记四(安全管理器) 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一个重要组成部分安全管理器. 安全管理器 ...

  7. java学习笔记07--日期操作类

    java学习笔记07--日期操作类   一.Date类 在java.util包中定义了Date类,Date类本身使用非常简单,直接输出其实例化对象即可. public class T { public ...

  8. ES6学习笔记<四> default、rest、Multi-line Strings

    default 参数默认值 在实际开发 有时需要给一些参数默认值. 在ES6之前一般都这么处理参数默认值 function add(val_1,val_2){ val_1 = val_1 || 10; ...

  9. 零拷贝详解 Java NIO学习笔记四(零拷贝详解)

    转 https://blog.csdn.net/u013096088/article/details/79122671 Java NIO学习笔记四(零拷贝详解) 2018年01月21日 20:20:5 ...

  10. kvm虚拟化学习笔记(四)之kvm虚拟机日常管理与配置

    KVM虚拟化学习笔记系列文章列表----------------------------------------kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51 ...

随机推荐

  1. 二模 (15)day2

    第一题:Alice和Bob两个人正在玩一个游戏,游戏有很多种任务,难度为p的任务(p是正整数),有1/2p 的概率完成并得到2p−1分,如果完成不了,得0分.一开始每人都是0分,从Alice开始轮流做 ...

  2. Node.js 全局对象

    JavaScript 中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可 以在程序的任何地方访问,即全局变量. 在浏览器JavaScript 中,通常window 是全 ...

  3. SpringMVC进阶

    1.springmvc(注解版本) 注解扫描 <?xml version="1.0" encoding="UTF-8"?> <beans xm ...

  4. IIS+PHP配置一次成功无错误版

    1.首先去PHP官网下载php的压缩包(.zip),由于web服务器是IIS所以尽量使用线程不安全版本的,我下载的是: VC11 x86 Non Thread Safe (2015-May-14 18 ...

  5. MFC学习笔记(一)向模态对话框传递数据

    声明构造函数为2个参数,具有默认参数的参数须放在后面. CDialogDimmer::CDialogDimmer(CString name,CWnd* pParent /*=NULL*/) : CDi ...

  6. 6、android 网络编程

    1.基于socket的用法 服务器端: 先启动一个服务器端的socket     ServerSocket svr = new ServerSocket(8989); 开始侦听请求 Socket s  ...

  7. 在文章没有缩略图的时候,如何去掉织梦官方的 DEDECMS无缩略图 图片

    1.打开 list_article.htm.2.替换代码 将 [field:array runphp='yes']@me = (empty(@me['litpic']) ? “<a href=’ ...

  8. 对HTML+CSS+JavaScript的个人理解

    HTML就像人的骨头架子,是人的根基,要有个人样呀,一个网站,一个WebApp要是缺根儿骨头,那就像人少个胳膊少个腿儿的,行动不方便啊:CSS就像人穿得衣服.鞋子,男人的纹身,女人擦得粉儿,好看呀,一 ...

  9. 搭建Tomcat6源代码阅读环境

    目标:使用MyEclipse8.5阅读Tomcat6源码. 第一步:在MyEclipse8.5中集成SVN插件. 第二步:从地址http://svn.apache.org/repos/asf/tomc ...

  10. SQLAlchemy一对多总结

    1.SQLAlchemy之一对多关系 1.1 创建单表 class Test(Base): __tablename__ = 'user' nid = Colume(Integer,primary_ke ...