如何成为OpenCart大师?

似乎他们没有任何文档,除了在官方论坛上的一些API调用。 我有Zend框架和CodeIgniter框架的经验。 任何OpenCart大师能否推荐我最好的方法来学习和掌握最短的时间? 我必须尽快做一个大项目。

OpenCart 1.5.X开发者快速入门指南

本指南是为已经熟悉PHP,OOP和MVC架构的开发人员编写的

在下面,你会看到购物车目录一侧的例子。 pipe理方的function是相同的,除了相关章节中提到的视图外


了解库

所有的库function都可以通过Controller,Model和Views使用$this->library_name 。 所有这些都可以在/system/library/文件夹中find。 例如,要访问当前购物车的产品,您需要使用Cart类,该类位于/system/library/cart.php ,可以使用$this->cart->getProducts()

常用的项目

  • customer.php – 客户相关的function
  • user.php – pipe理员用户相关的function
  • cart.php – 购物车相关function
  • config.php – 所有的设置都从这里加载
  • url.php – url生成function

了解路由参数

OpenCart框架依赖查询string参数中的route=aaa/bbb/ccc知道要加载的内容,并且是查找每个页面需要编辑的文件的基础function。 大多数路由实际上只使用aaa/bbb这应该被看作是两个部分,但是一些包含三个部分aaa/bbb/ccc第一部分aaa一般涉及通用文件夹内的文件夹,如控制器或模板文件夹。 第二部分通常涉及文件名,没有相关的.php.tpl扩展名。 第三部分在下面的“了解控制器”部分进行了解释


理解语言

语言存储在your-language子文件夹的/catalog/language/文件夹中。 在这个范围内,各种页面使用的常规文本值存储在文件夹内的your-language.php文件中,因此对于目录端的英文语言,可以在catalog/language/english/english.phpfind这些值。 对于特定的页面文本,您将需要页面的route (这通常是这种情况,但并不总是您可以指定任何您喜欢的语言文件)。 例如,search页面包含路由product/search ,因此该页面的语言特定文本可以在catalog/language/english/product/search.php (请注意,文件的名称和子文件夹与后面的路由相匹配.php

要在控制器中加载语言,请使用

 $this->language->load('product/search'); 

然后你可以使用语言库函数get来检索特定的语言文本,比如

 $some_variable = $this->language->get('heading_title'); 

语言variables在语言文件中使用一个特殊的variables$_来分配,该variables是一个键和文本值的数组。 在你的/catalog/language/english/product/search.php你应该find类似的东西

 $_['heading_title'] = 'Search'; 

全球语言文件english/english.php中的值将自动加载,并可在不使用$this->language->load方法的情况下使用


了解控制器

控制器是基于route加载的,并且相当直接地理解。 控制器位于/catalog/controller/文件夹中。 继续上一个例子,search页面的控制器在/ folder / /product/search.php文件夹中。 再次注意到使用了.php后面的路由。

打开控制器文件,您将看到一个名为ControllerProductSearchController类扩展的Pascal Case类名。 这又是特定的路线,与Controller后面的子文件夹名称和文件名称没有扩展名大写。 大写字母实际上并不是必需的,但为了便于阅读,build议使用大写字母。 值得注意的是,除了字母和数字之外,类名不会从子文件夹和文件名中获取任何值。 下划线被删除。

课内是方法。 方法public class中的方法可以通过路由来运行 – private不是。 默认情况下,使用标准的两部分路由(上面的aaa/bbb ),将调用默认的index()方法。 如果使用路线的第三部分(上面的ccc ),则将运行此方法。 例如, account/return/insert会加载/catalog/controller/account/return.php文件和类,并尝试调用insert方法


了解模型

OpenCart中的模型可以在/catalog/model/文件夹中find,并根据function进行分组,而不是路由,因此您需要通过控制器

 $this->load->model('xxx/yyy'); 

这将加载名为yyy.php的子文件夹xxx中的文件。 然后可以通过对象使用

 $this->model_xxx_yyy 

和控制器一样,你只能调用它的public方法。 例如,要调整图像大小,可以使用tool/image模型并按如下所示调用其resize方法

 $this->load->model('tool/image'); $this->model_tool_image->resize('image.png', 300, 200); 

了解控制器视图中的variables分配

为了将值传递给控制器​​的视图,只需将数据分配给$this->datavariables,该variables本质上是key =>值对的数组。 举个例子

 $this->data['example_var'] = 123; 

如果您熟悉将每个键转换为variables的extract()方法,那么在视图中访问它应该很容易理解。 所以example_var键变成了$example_var ,可以在视图中这样访问。


了解主题

主题仅供目录端使用,基本上是模板,样式表和主题图像的文件夹。 主题文件夹放置在/catalog/view/theme/文件夹中,后面跟着主题名称。 除了default文件夹外,文件夹名称不重要

pipe理员使用/admin/view/template/ (跳过path中的/theme/theme-name/ ,因为它不允许不同的主题)

模板文件驻留在主题文件夹内的template文件夹中。 如果任何模板对当前选定的主题不可用,则使用默认文件夹的模板作为后备。 这意味着可以用很less的文件创build主题,并且仍然可以完全运行。 它还减less了代码重复和升级时的问题


了解视图(模板)

与语言和模型一样,视图文件通常与路线有关,但不一定非要。 目录端的模板通常在/catalog/view/theme/your-theme/template/除非它不存在,在这种情况下将使用默认主题的模板。 对于上面的search页面示例,该文件是product/search.tpl 。 对于有三部分的路由,通常在aaa/bbb_ccc.tpl尽pipe没有硬性规则。 在pipe理员中,大多数页面都遵循这一点,不同之处在于列出项目的页面(如产品列表页面)位于catalog/product_list.tpl ,而产品编辑表单位于catalog/product_form.tpl 。 同样,这些都没有设置,而是默认购物车的标准。

模板文件实际上只是另一个php文件,但带有.tpl扩展名,实际上是在控制器文件中运行,因此您可以在控制器中编写代码的所有内容都可以在模板文件中运行(尽pipe不build议,除非绝对必要)


了解数据库对象

查询运行使用

 $result = $this->db->query("SELECT * FROM `" . DB_PREFIX . "table`"); 

DB_PREFIX是一个包含数据库前缀(如果存在)的常量

$result将为SELECT查询返回一个对象,其中包含一些属性

如果一个或多个数据作为关联数组返回,则$result->row包含第一行的数据

$result->rows包含一个行结果数组,非常适合循环使用foreach

$result->num_rows包含返回结果的数量

$this->db对象还有一些额外的方法

$this->db->escape() ()在传递的值上使用mysql_real_escape_string()

$this->db->countAffected返回受UPDATE查询影响的行数等等

$this->db->getLastId()使用mysql_insert_id()返回最后一个自动递增ID


了解保留的variables

OpenCart具有预定义的variables来代替标准的$_GET$_POST$_SESSION$_COOKIE$_FILES$_REQUEST$_SERVER

$_SESSION使用$this->session->data进行编辑,其中data是一个模拟$_SESSION的关联数组

所有其他的都可以使用$this->request来访问,并且已经被“清理”以符合启用/禁用的魔术引号,所以

$_GET变成$this->request->get

$_POST变成$this->request->post

$_COOKIE变成$this->request->cookie

$_FILES变成$this->request->files

$_REQUEST变成$this->request->request

$_SERVER变成$this->request->server


概要

虽然以上内容对于开发人员来说并不是一个防弹指南,但希望这对于入门者来说是一个很好的起点

全局库方法:基本的opencart库函数及其function,其中大多数可以从目录或pipe理文件夹(控制器,模型,视图)中的任何地方调用,

 CACHE $this->cache->delete($key) - Deletes cache [product, category, country, zone, language, currency, manufacturer] CART $this->cart->getProducts() Gets all products currently in the cart including options, discounted prices, etc. $this->cart->add( $product_id, $qty = 1, $options = array()) - Allows you to add a product to the cart $this->cart->remove( $key ) - Allows you to remove a product from the cart $this->cart->clear() - Allows you to remove all products from the cart $this->cart->getWeight() - Sum of the weight of all products in the cart that have require shipping set to Yes $this->cart->getSubTotal() - returns the subtotal of all products added together before tax $this->cart->getTotal() - returns the total of all products added together after tax $this->cart->countProducts() - returns the count of all product in the cart $this->cart->hasProducts() - returns true if there is at least one item in the cart $this->cart->hasStock() - returns false if there is at least one item in the cart that is out of stock $this->cart->hasShipping() - returns true if there is at least one item in the cart that requires shipping $this->cart->hasDownload() - returns true if there is at least one item in the cart that has a download associated CONFIG $this->config->get($key) - returns setting value by keyname based on application (catalog or admin) $this->config->set($key, $value) - set the value to override the setting value. DOES NOT SAVE TO DATABASE CURRENCY $this->currency->set($currency) - set or override the currency code to be used in the session $this->currency->format($number, $currency = '', $value = '', $format = TRUE) - format the currency $this->currency->convert($value, $from, $to) - convert a value from one currency to another. Currencies must exist $this->currency->getId() - get the database entry id for the current currency (1, 2, 3, 4) $this->currency->getCode() - get the 3-letter iso code for the current currency (USD, EUR, GBP, AUD, etc) $this->currency->getValue($currency) - get the current exchange rate from the database for the specified currency. $this->currency->has(currency) - Check if a currency exists in the opencart currency list CUSTOMER $this->customer->login($email, $password) - Log a customer in $this->customer->logout() - Log a customer out $this->customer->isLogged() - check if customer is logged in $this->customer->getId() - get the database entry id for the current customer (integer) $this->customer->getFirstName() - get customer first name $this->customer->getLastName() - get customer last name $this->customer->getEmail() - get customer email $this->customer->getTelephone() - get customer telephone number $this->customer->getFax() - get customer fax number $this->customer->getNewsletter() - get customer newsletter status $this->customer->getCustomerGroupId() - get customer group id $this->customer->getAddressId() - get customer default address id (maps to the address database field) DATABASE $this->db->query($sql) - Execute the specified sql statement. Returns row data and rowcount. $this->db->escape($value) - Escape/clean data before entering it into database $this->db->countAffected($sql) - Returns count of affected rows from most recent query execution $this->db->getLastId($sql) - Returns last auto-increment id from more recent query execution 4 DOCUMENT (*Called from controller only before renderer) $this->document->setTitle($title) - Set page title $this->document->getTitle()- Get page title $this->document->setDescription($description) - Set meta description $this->document->getDescription()- Get meta description $this->document->setKeywords()- Set meta keywords $this->document->getKeywords()- Get meta keywords $this->document->setBase($base) - Set page base $this->document->getBase() - Get page base $this->document->setCharset($charset) - Set page charset $this->document->getCharset() - Get page charset $this->document->setLanguage($language) - Set page language $this->document->getLanguage()- Get page language $this->document->setDirection($direction) - Set page direction (rtl/ltr) $this->document->getDirection()- Get page direction (rtl/ltr) $this->document->addLink( $href, $rel ) – Add dynamic <link> tag $this->document->getLinks()- Get page link tags $this->document->addStyle( $href, $rel = 'stylesheet', $media = 'screen' ) – Add dynamic style $this->document->getStyles()- Get page styles $this->document->addScript( $script ) - Add dynamic script $this->document->getScripts()- Get page scripts $this->document->addBreadcrumb($text, $href, $separator = ' &gt; ') – Add breadcrumb $this->document->getBreadcrumbs()- Get Breadcrumbs ENCRYPT $this->encryption->encrypt($value) - Encrypt data based on key in admin settings $this->encryption->decrypt($value) - Decrypt data based on key in admin settings IMAGE $this->image->resize($width = 0, $height = 0) JSON $this->json->encode( $data ) $this->json->decode( $data , $assoc = FALSE) LANGUAGE $this->language->load($filename); LENGTH $this->length->convert($value, $from, $to) - convert a length to another. units must exist $this->length->format($value, $unit, $decimal_point = '.', $thousand_point = ',') - format the length to use unit LOG $this->log->write($message) - Writes to the system error log REQUEST $this->request->clean($data) - Cleans the data coming in to prevent XSS $this->request->get['x'] - Same as $_GET['x'] $this->request->post['x'] - Same as $_POST['x'] RESPONSE $this->response->addHeader($header) - additional php header tags can be defined here $this->response->redirect($url) - redirects to the url specified TAX $this->tax->setZone($country_id, $zone_id) - Set the country and zone id for taxing (integer) $this->tax->calculate($value, $tax_class_id, $calculate = TRUE) - Calculate all taxes to be added to the total $this->tax->getRate($tax_class_id) - Get the rates of a tax class id $this->tax->getDescription($tax_class_id) - Get the description of a tax class id $this->tax->has($tax_class_id) - Check if a tax class id exists in opencart SESSION $this->session->data['x'] - Same as $_SESSION['x'] 

有一个OpenCart维基网站,为初学者开发者提供文档。 按照下面给出的url了解更多详情:

http://wiki.opencarthelp.com/doku.php?id=start
http://wiki.opencarthelp.com/doku.php?id=methods_reference

例如,方法参考具有以下细节:

  1. 客户login
  2. 数据库访问
  3. 购物车处理
  4. configuration
  5. 高速caching
  6. 货币处理

仍然有一些页面正在build设中,但这将是有益的。