![]() |
|
|||||||
![]() |
|
|
Thread Tools | Display Modes |
|
|
|
#1
IP: 114.238.108.166
|
|||
|
|||
|
3、了解X-Cart 站点目录结构
在进行开发之前,我们首先需要了解X-Cart系统的结构。 以下是我在PhpStorm上面的截图: 下面是对上面截图的说明: 根目录 客户在访问网站的时候所需要浏览的页面(除了一些自定义的静态页面)全部都在站点跟目录下面,如登陆页面login.php,产品页面product.php。 跟目录下面还有一些重要的文件,在开发中要非常的注意: •prepare.php 为适应不同服务器与数据库版本作准备、重改一些函数; •init.php 初始化文件(加载必要函数、设定内存限制、数据表字段构建等); •config.php 配置文件,包括站点的auto code, security key等信息的验证等,该文件非常重要,不能轻易手动更改,否则会照成整个站点打不开的情况。 •auth.php 用户认证 •cleanup.php 用于清理站点缓存。请求的时候需要加上Auth code, 如: www.x-cart-plus.com/cleanup.php?auth_code=XXXXXXXXXXXXXXXXXXXXX •top.inc.php定义核心常量与变量。 由于x-cart使用的时模块开发,很多模块代码都是公用的,所以,更目录下的*.php会加在其他地方的*.php。如,使用x_load()方法加载include/func文件夹下面的代码文件。 admin文件夹 admin用户在进入网站,访问的页面都是直接请求的admin目录下面的文件,如admin访问搜索页面请求的是:http://www.x-cart-plus.com/admin/search.php 。 常用文件: •admin/home.php 起始文件 •admin/auth.php 用户认证文件(主要是利用session保存用户登录信息到数据库) •admin/home.tpl 包含菜单 折扣 位置 认证等模板(main/authentication.tpl)、 •admin/main.php 仪表板接口 (xcart运行状况) •admin/configuration.php 大体设置与模块配置 catalog 文件夹 该文件夹用来保存admin在后台管理页面HTML catalog生成的HTML页面。 files 文件夹 用来保存上传到站点的文件,当管理员在选择站点中文件(例如图片)进行设置的时候,访问的就是该文件夹下面的文件。 images 文件夹 该文件用来保存站点中的各种图片,如产品分类的图片,产品的图片,广告图片等等。 include 文件夹 这个文件夹下面的文件非常的重要,相当于是系统的逻辑处理和数据处理层,逻辑处理的文件直接保存在include文件夹下面。详细介绍如下: 1.include/classes:用来保存系统用到的几个大的类,如数据存储的类class.DataStorage.php; 2.include/func:数据处理层的文件; 3.include/lib:用于保存一些程序库,如: include/lib/smarty --smarty模板引擎 include/lib/phpmailer --邮件收发用的 1.include/payment:与支付相关的处理文件; 2.include/templater:smarty继承与插件扩展。 3.include目录下文件:逻辑处理的相关文件,如: include/xcartmailer.php --smtp发送邮件类 module 文件夹 该文件夹用来保存需要加载的模块的控制器代码,如订单管理模块的控制器代码就在目录module/ Advanced_Order_Management下面。 partner 文件夹 产家提供商设计到页面都保存在该目录下。 payment 文件夹 与支付相关的控制器文件。 provider 文件夹 厂家提供商相关的处理文件。 shipping 文件夹 与运费相关的处理文件。 skin 文件夹 用于保存不同的皮肤,无论是前台还是后的模版页面全都保存在skin文件夹下面。请见详细介绍章节。 skin_backup 文件夹 用于保存备份的皮肤文件。 sql 文件夹 用于保存一些*.sql文件。 var 文件夹 用于保存系统日志文件,缓存文件,临时文件等。可以清理。 其他文件夹 customer文件夹,mail 文件夹,schemes 文件夹,tools 文件夹,upgrade 文件夹,这些不是非常的清楚就不做介绍了。 4、skin文件夹 skin 文件夹保存了系统的所有皮肤,含有系统所有的模版文件,无论是前台页面的还是admin页面的。 在skin文件夹下有一个common_files的文件夹,这个文件夹保存了系统的所有的基础模版,其他的文件夹都是不同的皮肤,是在common_files的基础上的二次开发,也可以说是重写。在这里,我就把common_files文件夹下的文件详细介绍一下: •common_files目录下文件:改目录下的模版文件基本都是所有页面公共的模版,如bottom.tpl, dialog.tpl; •404:很显然,该文件夹用于存储错误提示页面; •common_files/admin:admin管理页面的模版; •common_files/buttons:网站一些按钮的模版; •common_files/css:网站所有的模版样式文件; •common_files/customer:前台页面的模版; •common_files/help:帮助模块的模版; •common_files/images:模版用到的一些图片; •common_files/js:模版用到的js文件; •common_files/lib:模版用到的一些js类库,如jquery; •common_files/mail:系统发送各种邮件时,各模块所用的模版; •common_files/main:admin管理页面的一些模版; •common_files/modules:前台页面的模块模版,如客户评价模版Customer_Reviews •common_files/pages:admin创建的静态页面; •common_files/partner:与合作伙伴相关页面的模版; •common_files/payment:支付模块的模版; •common_files/provider:厂商供应商模版; •common_files/fulfilment与common_files/single:包含home.tpl与menu_box.tpl。 5、自带bug 更新order问题 在Edit ordered products页面,修改订单,点击update,当前页面的数据修改了,但是数据没有保存到数据库,原因就是没有调用func.edit.php中的更新函数func_update_order,调用了即可修复。 Taxed price问题 Related products 和 Bestsellers都没有计算taxed price, 不能应用自定义的tax在上面。 修改如下: func.product.php 1387行, Code:
if ($current_area == 'C' && empty($skip_tables['product_taxes']){
//……
}
To:
if ($current_area == 'C' && !empty($skip_tables['product_taxes']){
//……
}
Edit order total问题 Edit order totals页面,管理员在修改了订单的payment method, delivery method, discount, coupon, shipping price等之后,点击update当页面刷新的时候会看到修改后的状态,但是这些修改的数据并没有更新到数据库中。 |
![]() |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
| Thread Tools | |
| Display Modes | |
|
|
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 |