## OPENCART程序架构
opencart和其它的电商程序不同,市面上的大都使用现成的模版引擎 來开发,而opencart則是基於MVC+L的模式来作为的架构起火而全新开发的一套系統,所以程式码相当轻巧,执行效率更是超越其它电商程序,这样 的架构和程式友让后续的程式开发人員在编写时更容易且清楚,程式和视觉,有利於日后的而有別於其它的MVC模式,opencart更加入了 语言层,能够更轻松完成多语言的实现
**MVC+L模式**
1. Model – 数据和组件处理
2. View – 外观处理
3. Controller – 主控制程式
3. Language – 语言处理
**OpenCart相对于MVC+L的程式位置**
> 前台
1. M: \catalog\model\
1. V: \catalog\view\
1. C: \catalog\controller\
1. L: \catalog\language\
> 後台
1. M: \admin\model\
1. V: \admin\view\
1. C: \admin\controller\
1. L: \admin\language\
> 參考上面的程式位置,我们如果要修改外觀模版就到catalog\view\找相關程式修改,要修改控制的程式就到catalog\controller\,以此類推,以下是opencart的主要目錄
**OpenCart主要目录**
|目录|说明|
|----|----|
|\admin |后台|
|\catalog |前台|
|\download |下载类商品存放位置(由程式控制,非直接复制文档至此)|
|\image |图片档|
|\install 安装档(安全起见,|安裝完请刪除)|
|\system |系統程式|
|\.htaccess |网址改写控制档(SEO urls)|
|\config.php |系統设定档|
|\php.ini |php设定|
**前台程式列表(显示介面)**
显示介面的程式除了少数几個是共用一個控制程式外,其餘的和控制程式的位置大致相同, 像結帳功能的guest_step_3.php直接輸出到confirm.tpl顯示,所以就沒有guest_step_3.tpl,還有module功 能模組的bestseller.tpl和bestseller_home.tpl同樣受bestseller.php控制,所以也找不到 bestseller_home.php,還有success.tpl成功顯示介面也是一樣,只要是動作完成或成功的画面大都是使用它來作輸出,其餘的請 自行休
會,以下就是前台顯示介面的程式列表
**Catalog\view\theme\your template\template\account 會員功能**
—— account.tpl 会员功能主頁
—— address.tpl 地址管理(更改,新增)
—— addresses.tpl 地址管理(列表,刪除)
—— create.tpl 创建帐号
—— download.tpl 商品下载
—— edit.tpl 编辑个人资料
—— forgotten.tpl 取回蜜码
—— history.tpl 订单记录列表
—— invoice.tpl 折扣券接收处理程式
—— login.tpl 登入
—— newsletter.tpl 电子报订阅取消
—— password.tpl 密码变更
**Catalog\view\theme\your template\template\checkout 结帐功能**
—— address.tpl 地址处理(配送,帳單地址)
—— cart.tpl 浏览购物清单(购物車)
—— confirm.tpl 结帐功能-最后确认
—— guest_step_1.tpl 免登入结帐第一步
—— guest_step_2.tpl 免登入结帐第二步
—— payment.tpl 结帐功能-选择付款方式
—— shipping.tpl 结帐功能-选择配送方式
**Catalog\view\theme\your template\template\common 主要版面**
—— column_left.tpl 左栏模組载入
—— column_right.tpl 右栏模組载入
—— footer.tpl 页尾
—— header.tpl 页首
—— home.tpl 首页
—— maintenance.tpl 维护中显示頁
—— success.tpl 成功讯信
**Catalog\view\theme\your template\template\error 404错误**
—— not_found.tpl 无此頁
**Catalog\view\theme\your template\template\information 網站資訊**
—— contact.tpl 发送信件给店家
—— information.tpl 商店文章
—— sitemap.tpl 网站导鉴
**Catalog\view\theme\your template\template\mail 訂單通知信**
—— order_confirm.tpl 订单通知信
**Catalog\view\theme\your template\template\module 功能模組**
—— bestseller.tpl 畅销商品(侧栏)
—— bestseller_home.tpl 畅销商品(中间)
—— cart.tpl 购物清单(侧栏)
—— category.tpl 目录(侧栏)
—— featured.tpl 推荐商品(侧栏)
—— featured_home.tpl 推荐商品(中间)
—— google_talk.tpl google即时通(侧栏)
—— information.tpl 商店文章(侧栏)
—— latest.tpl 最新商品(侧栏)
—— latest_home.tpl 最新商品(中間)
—— manufacturer.tpl 品牌选单(侧栏)
—— special.tpl 特价商品(侧栏)
—— special_home.tpl 特价商品(中間)
**Catalog\view\theme\your template\template\product 商品功能**
—— category.tpl 同目录商品列表
—— manufacturer.tpl 同品牌商品列表
—— product.tpl 商品详细內容页
—— review.tpl 商品评论
—— search.tpl 搜寻功能
—— special.tpl 特价商品列表
**Catalog\view\theme\your template\template\payment 付款模組**
> 以上就是前台显示介面程式的列表
## 前台程式列表(控制介面)
当您刚刚学习一套系统的时候我们总是在一堆的代码中录找,要改一个地方的时候,都还要找来找去,所以像oscommerce或zencart这样的系统,会有人将程序的文件系统列出来,使可以快速地找到功能代码所在的位置,可以节省很多时间,也可以减少一开始不熟悉带来的麻烦,本书大部分的内容是自己在学习过程中从网上搜集而来的内容,在此总结整理供大家参考。
**Catalog\controller\account 会员功能**
—— account.php 会员功能主页
—— address.php 会员功能-地址管理
—— create.php 创建帐号
—— download.php 会员功能-商品下载
—— edit.php 会员功能-编辑个人資料
—— forgotten.php 取回密码
—— history.php 会员功能-订单记录列表
—— invoice.php 折扣券接收处理程式
—— login.php 登入
—— logout.php 登出完成页
—— newsletter.php 会員功能-电子报订阅取消
—— password.php 会员功能-密码变更
—— success.php 创建帐号成功讯息
**Catalog\controller\checkout 结帐功能**
—— address.php 结帐功能-地址处理(配送,帐单..地址)
—— cart.php 浏览购物清单(购物车)
—— confirm.php 结帐功能-最后确认
—— guest_step_1.php 免登入结帐第一步
—— guest_step_2.php 免登入结帐第二步
—— guest_step_3.php 免登入结帐第三步
—— payment.php 结帐功能-选择付款方式
—— shipping.php 结帐功能-选择配送方式
—— success.php 完成结帐成功訊息
**Catalog\controller\common 主要版面**
—— column_left.php 左栏模組载入
—— column_right.php 右栏模組载入
—— footer.php 页尾
—— header.php 页首
—— home.php 首页
—— maintenance.php 维护中显示頁
—— seo_url.php 网址最佳化处理程式之一(縮短网址)
**Catalog\controller\error 404错误**
—— not_found.php 404页面
**Catalog\controller\feed 网站地图和訂阅**
—— google_base.php 网站订阅(feed)
—— google_sitemap.php 网站地图
**Catalog\controller\information 网站资讯**
—— contact.php 发送信件给店家
—— information.php 商店文章
—— sitemap.php 网站导师览
**Catalog\controller\module 功能模组**
—— bestseller.php 畅销商品
—— cart.php 购物清单(侧栏)
—— category.php 目录(侧栏)
—— featured.php 推荐商品
—— google_talk.php google即时通(側栏)
—— information.php 商店文章(側栏)
—— latest.php 最新商品
—— manufacturer.php 品牌选单(侧栏)
—— special.php 特价商品
**Catalog\controller\product 商品功能**
—— category.php 同目录商品列表
—— manufacturer.php 同品牌商品列表
—— product.php 商品详細內容頁
—— search.php 搜录功能
—— special.php 特价商品列表
Catalog\controller\payment 付款模组
以上就是前台控制程式的列表
看到很多使用opencart架設的商店公使用单一語言和货币,目标应该是针对单一国家做销售,这時候語言和货币选单似乎就显得有点多余,只需要修改header.tpl就可以刪掉,以下是以1.4.9.1版做范例且模版为預設模版,其他版本请发挥想像力,大致上是相同
1. 开启catalog\view\theme\default\template\common\header.tpl
2. 找到下列这段程式码(大约第110到151行),并刪除它即可除去货币和语言选单
~~~
<div class="div7">
<?php if ($currencies) { ?>
<form action="<?php echo str_replace('&', '&', $action); ?>" method="post" enctype="multipart/form-data" id="currency_form">
<div>
<?php foreach ($currencies as $currency) { ?>
<?php if ($currency['code'] == $currency_code) { ?>
<div><a><?php echo $currency['title']; ?></a></div>
<?php } ?>
<?php } ?>
<div>
<?php foreach ($currencies as $currency) { ?>
<a onclick="$('input[name=\'currency_code\']').attr('value', '<?php echo $currency['code']; ?>'); $('#currency_form').submit();"><?php echo $currency['title']; ?></a>
<?php } ?>
</div>
</div>
<div style="display: inline;">
<input type="hidden" name="currency_code" value="" />
<input type="hidden" name="redirect" value="<?php echo $redirect; ?>" />
</div>
</form>
<?php } ?>
<?php if ($languages) { ?>
<form action="<?php echo str_replace('&', '&', $action); ?>" method="post" enctype="multipart/form-data" id="language_form">
<div>
<?php foreach ($languages as $language) { ?>
<?php if ($language['code'] == $language_code) { ?>
<div><a><img src="image/flags/<?php echo $language['image']; ?>" alt="<?php echo $language['name']; ?>" /> <?php echo $language['name']; ?></a></div>
<?php } ?>
<?php } ?>
<div>
<?php foreach ($languages as $language) { ?>
<a onclick="$('input[name=\'language_code\']').attr('value', '<?php echo $language['code']; ?>'); $('#language_form').submit();"><img src="image/flags/<?php echo $language['image']; ?>" alt="<?php echo $language['name']; ?>" /> <?php echo $language['name']; ?></a>
<?php } ?>
</div>
</div>
<div>
<input type="hidden" name="language_code" value="" />
<input type="hidden" name="redirect" value="<?php echo $redirect; ?>" />
</div>
</form>
<?php } ?>
</div>
~~~
以上是刪除opencart前台语言和货币选单最快的方法,如有错误欢迎提出