网络营销电子商务研究中心  
How to buy the best prescription safety glasses in Canada? Let's study!
Go Back   网络营销电子商务研究中心 > 网站建设 > X-Cart
User Name
Password
 
FAQ Members List Calendar Cheap Glasses

Reply
 
Thread Tools Display Modes
  #1   IP: 114.238.108.166
Old 2015-05-28, 10:37 PM
Hackettstown Hackettstown is offline
初级会员
 
Join Date: 2005-02-27
Posts: 3
Hackettstown 现在声名狼藉
Default 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>



直接输出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
Reply With Quote
Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

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

Prescription-glasses.com offers prescription glasses online at discount prices.
All times are GMT +8. The time now is 01:56 AM.


Powered by vBulletin Version 3.8.7
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.