本文目录:
- 1、opencart是什么?
- 2、prestashop、zencart、opencart、magento哪一个好?
- 3、zencart opencart 哪个好
- 4、如何使用OpenCart 2.x Event事件系统
opencart是什么?
OpenCart是国外著名的开源电子商务系统,由英国人Daniel一人独立开发,其社区非常活跃,由各国网友翻译出来的语言包已经达到18种,其中包括中文,俄文,法文,西班牙文,德文,日文等等。
prestashop、zencart、opencart、magento哪一个好?
各有个的优势:
prestashop: 1、免费 开源PrestaShop是免费的电子商务购物车软件。免费下载,免费使用,不用担心哪天有人跑过来告诉你们未经授权非法使用来索要赔偿,也可以抛弃那些昂贵的商业软件,使成本大大降低。这就是Prestashop开源软件的优势。2、可扩展 模块化 PrestaShop简单实用,能够轻易的添加调整前台页面的显示,通过安装的额外的模块组件,管理员甚至都不需要专业人士就能很轻松的将前台页面布置成自己想要的样子。其模块化的设计,将页面分成许许多多的代码块,能够在短时间内定制一个中小型的电子商务网站。3、轻量 快速 虽然Prestashop功能这么强大,但它还是一个极为轻量级的电子商务解决方案(不算翻译文件的话仅6M),所以,Prestashop很容易下载安装和更新。4、圆滑且直观的界面 一个好的网站,形象很重要。没有人喜欢天天面对着丑不啦叽的界面操作。Prestashop界面设计美观大方,逻辑性强,入手很快。基于WEB2.0技术,使用AJAX异步通信机制,给予用户优秀的操作体验。
opencart,不仅外观漂亮,而且扩展性比较强,完全可以满足中小型外贸公司的需求;zencart如果不买插件的话,功能上和opencart区别不大,如果你想使用zencart的更多功能必须花钱定制插件。所以从性价比上opencart不错.
zencart 不太好,opencart泾渭分明,易于功能二次开发。自己懂程序的话修改起来很简单。官方Opencart功能相对粗糙,最近出了个v5cart,是基于Opencart二次开发版本,在程序结构上做了很大修改,功能也增强不少,特别是支持手机端访问,新建站的话建议试试。
Magento: 本身就是电子商城程序,可以直接用来建电子站。
zencart opencart 哪个好
我更倾向于opencart,不仅外观漂亮,而且扩展性比较强,完全可以满足中小型外贸公司的需求;zencart如果不买插件的话,功能上和opencart区别不大,如果你想使用zencart的更多功能必须花钱定制插件。所以从性价比上opencart不错.
从程序员的角度看zencart太恶心了,opencart泾渭分明,易于功能二次开发。自己懂程序的话修改起来很简单。官方Opencart功能相对粗糙,最近出了个v5cart,是基于Opencart二次开发版本,在程序结构上做了很大修改,功能也增强不少,特别是支持手机端访问,新建站的话建议试试。
如何使用OpenCart 2.x Event事件系统
OpenCart 2.x 包含很多新特性,其中之一就是专为开发者提供的事件系统,Event
System。它允许你在不修改原有系统代码的基础上(
当然也不使用vQmod或者是2.x版本新增的OCMOD修改代码,这样可以规避代码冲突的风险。
),规定某些特定操作执行的时候,触发特定的动作。比如说:在用户下单或是注册的时候,你可以使用事件系统向后台发送通知信息。
使用原理:
使用事件系统需要两个步骤:
注册事件处理器。
接入事件处理器。
在控制器文件中注册事件处理器十分简单。你可以使用一个包含所有方法的单独文件作为事件处理器
,也可以使用在控制器里分出一个方法。注册事件处理器你需要使用 extension/event 模型(OpenCart 2.0.1+)或者
tool/event 模型(OpenCart 2.0.0.0)。 extension/event 模型有两个方法:
addEvent($code, $trigger, $action) 注册事件 和 deleteEvent($code)
删除事件。你可以在你开发插件时,在intsall()方法里面使用addEvent。在卸载插件的方法 uninstall()中使用
deleteEvent。
$code 参数用于组合你的事件处理器。
$trigger 参数用于规定触发时的动作参数 .这里有许多预定的opencart系统触发参数: .
$action 参数用于定位你的事件处理器。它通常是一组标准的控制器路由,比如:module/mymodule/on_user_created。
实例
环境:opencart 2.0.1+。
假设我们要开发一个名叫“My Module”的模块。
后台控制器: admin/controller/module/mymodule.php .
前台文件: catalog/controller/module/mymodule.php .
需求:当有用户注册或是删除一个店铺的时候,发送一份email给网站管理员。触发的参数我们可以定义为 pre.admin.store.delete 和 post.customer.add。
首先我们可以在我们的模块中使用 install() 方法:
public function install() {
$this-load-model('extension/event');
$this-model_extension_event-addEvent('mymodule', 'pre.admin.store.delete', 'module/mymodule/on_store_delete');
$this-model_extension_event-addEvent('mymodule', 'post.customer.add', 'module/mymodule/on_customer_add');
}
卸载模块的流程方法 uninstall 如下:
public function install() {
$this-load-model('extension/event');
$this-model_extension_event-addEvent('mymodule', 'pre.admin.store.delete', 'module/mymodule/on_store_delete');
$this-model_extension_event-addEvent('mymodule', 'post.customer.add', 'module/mymodule/on_customer_add');
}
接下来我们接入事件处理器。`pre.admin.store.delete`
处理后台事件,所以他的处理器必须接入admin/中的控制器文件中。当店铺被删除时,我们需要一个处理器方法来发送通知给后台管理员。以 pre.
开头的事件表示在控制器方法执行前触发,以 post.
开头的事件则表示控制器方法执行之后触发。同时,我们也想要在我们的信息中包含店铺地址的域名,如果先执行完删除店铺的操作,那么我们就无法得到被删店铺
的域名了。
事件处理器:
public function on_store_delete($store_id) {
$this-load-model('setting/store');
$store_info = $this-model_setting_store-getStore($store_id);
$admin_mail = $this-config-get('config_email');
mail($admin_mail, "A store has been deleted", "The store " . $store_info['url'] . " was deleted.");
}
post.customer.add 需要在前台控制器catalog中写入事件处理器。当有新用户注册时,通知后台管理员。类似的方法如下:
public function on_customer_add($customer_id) {
$this-load-model('account/customer');
$customer_info = $this-model_account_customer-getCustomer($customer_id);
$admin_mail = $this-config-get('config_email');
mail($admin_mail, "New Customer", "A new customer has just
registered with the following e-mail: " . $customer_info['email']);
}
注意: 我们使用 mail() 函数发送邮件真实情况,我们可能要用到 OpenCart 的 Mail 类 发送 e-mails。
最后的代码如下:
admin/controller/module/mymodule.php
?php
class ControllerModuleMyModule extends Controller
{
public function install() {
$this-load-model('extension/event');
$this-model_extension_event-addEvent('mymodule', 'pre.admin.store.delete', 'module/mymodule/on_store_delete');
$this-model_extension_event-addEvent('mymodule', 'post.customer.add', 'module/mymodule/on_customer_add');
}
public function uninstall() {
$this-load-model('extension/event');
$this-model_extension_event-deleteEvent('mymodule');
}
public function on_store_delete($store_id) {
$this-load-model('setting/store');
$store_info = $this-model_setting_store-getStore($store_id);
$admin_mail = $this-config-get('config_email');
mail($admin_mail, "A store has been deleted", "The store " . $store_info['url'] . " was deleted.");
}
}
catalog/controller/module/mymodule.php
?php
class ControllerModuleMyModule extends Controller {
public function on_customer_add($customer_id) {
$this-load-model('account/customer');
$customer_info = $this-model_account_customer-getCustomer($customer_id);
$admin_mail = $this-config-get('config_email');
mail($admin_mail, "New Customer", "A new customer has just
registered with the following e-mail: " . $customer_info['email']);
}
}
进阶
除了上述的标准用法,事件系统也能用做创建跨模块接口。使用Event 对象
($this-event),你可以在任何地方触发任何的事件。你可以使用它触发你自定义的事件。设想你正在开发一个用户评论的模块。你可以在客
户发送评论的时候触发一个事件,这就允许其他的模块开发者为你的事件处理期创建自定义的处理方法,而不需要使用vQmod或者OCMOD来修改代码。它可
以确保Opencart变得更加稳定。
PS:Event类定义在 system/engine/event.php 文件中。
【opencart】的内容来源于互联网,如引用不当,请联系我们修改。
网友留言: