如何成为OpenCart大师?[已关闭]面向初学者的 OpenCart 1.5.X 开发人员快速入门指南
似乎除了官方论坛上的一些api调用之外,他们没有文档。我有Zend框架和CodeIgniter框架的经验。任何OpenCart大师都可以向我推荐在最短的时间内学习和掌握它的最佳方式吗?我必须尽快用它做一个大项目。
似乎除了官方论坛上的一些api调用之外,他们没有文档。我有Zend框架和CodeIgniter框架的经验。任何OpenCart大师都可以向我推荐在最短的时间内学习和掌握它的最佳方式吗?我必须尽快用它做一个大项目。
本指南是为已经熟悉 PHP、OOP 和 MVC 架构的开发人员编写的
在下文中,您将看到购物车目录端的示例。管理端在功能上是相同的,除了相关部分中注明的视图
所有库功能都可以通过使用 控制器、模型和视图 进行访问。所有这些都可以在文件夹中找到。例如,要访问当前购物车的产品,您需要使用类,该类位于中,可以使用以下命令进行访问$this->library_name
/system/library/
Cart
/system/library/cart.php
$this->cart->getProducts()
常用物品
customer.php
- 客户相关功能user.php
- 管理用户相关功能cart.php
- 购物车相关功能config.php
- 所有设置都是从这里加载的url.php
- 网址生成功能OpenCart的框架依赖于in查询字符串参数来知道要加载的内容,并且是查找每个页面需要编辑的文件的基础功能。大多数路由实际上只使用哪个部分应该被视为两个部分,但是有些包含三个部分 第一部分通常与通用文件夹中的文件夹相关,例如控制器或模板文件夹。第二部分通常与文件名有关,没有相关或扩展名。第三部分在下面的“了解控制器”一节中进行了说明。route=aaa/bbb/ccc
aaa/bbb
aaa/bbb/ccc
aaa
.php
.tpl
语言存储在子文件夹的文件夹中。在此中,跨各个页面使用的常规文本值存储在文件夹内的文件中,因此对于目录端的英语,您将在 中找到这些值。对于特定的页面文本,您将需要页面(通常情况如此,但并非总是如此,因为您可以指定所需的任何语言文件)。例如,搜索页面具有 route ,因此可以在 中找到该页面的语言特定文本(请注意,文件的名称和子文件夹与后跟的路由匹配)。/catalog/language/
your-language
your-language.php
catalog/language/english/english.php
route
product/search
catalog/language/english/product/search.php
.php
若要在控制器中加载语言,请使用
$this->language->load('product/search');
然后,您可以使用语言库函数来检索特定的语言文本,例如get
$some_variable = $this->language->get('heading_title');
语言变量在语言文件中使用特殊变量分配,该变量是键和文本值的数组。在你的,你应该找到类似的东西$_
/catalog/language/english/product/search.php
$_['heading_title'] = 'Search';
全局语言文件中的值将自动加载,无需该方法即可使用english/english.php
$this->language->load
控制器是根据 加载的,并且相当容易理解。控制器位于文件夹中。从上一个示例继续,“搜索”页的控制器位于此文件夹中。再次注意,使用了 所遵循的路线。route
/catalog/controller/
/product/search.php
.php
打开控制器文件,您将看到一个扩展该类的 Pascal Case 类名,名为 。这同样特定于路由,后跟子文件夹名称和文件名,不带大写扩展名。大写实际上不是必需的,但建议使用大写字母以便于阅读。值得注意的是,类名不会从子文件夹和文件名中获取除字母和数字以外的任何值。删除下划线。Controller
ControllerProductSearch
Controller
类中是方法。声明的类中的方法可以通过路由运行 - 不是。默认情况下,对于标准的两部分路由(上图),将调用默认方法。如果使用路由的第三部分(上图),则将改为运行此方法。例如,将加载文件和类,并尝试调用该方法public
private
aaa/bbb
index()
ccc
account/return/insert
/catalog/controller/account/return.php
insert
OpenCart中的模型位于文件夹中,并根据功能而不是路线进行分组,因此您需要通过以下方式将它们加载到控制器中/catalog/model/
$this->load->model('xxx/yyy');
这会将文件加载到名为 的子文件夹中。然后可以通过对象使用它xxx
yyy.php
$this->model_xxx_yyy
与控制器一样,您只能调用其方法。例如,要调整图像大小,可以使用模型并按如下方式调用其方法public
tool/image
resize
$this->load->model('tool/image');
$this->model_tool_image->resize('image.png', 300, 200);
为了将值从控制器传递到视图,您只需将数据分配给变量,该变量实质上是键 = > 值对的数组。作为示例$this->data
$this->data['example_var'] = 123;
如果您熟悉将每个键转换为变量的 extract() 方法,则在视图中访问此内容应该很容易理解。因此,密钥成为并且可以在视图中作为这样的内容进行访问。example_var
$example_var
主题仅可用于目录端,并且基本上是模板,样式表和主题图像的文件夹。主题文件夹放置在文件夹中,后跟主题名称。文件夹名称不重要,文件夹除外/catalog/view/theme/
default
管理端使用(跳过路径,因为它不允许不同的主题)/admin/view/template/
/theme/theme-name/
模板文件驻留在主题文件夹内的文件夹中。如果任何模板不可用于当前选定的主题,则默认文件夹的模板将用作回退。这意味着可以用很少的文件创建主题,并且仍然可以完全运行。它还减少了代码重复和升级时的问题template
与语言和模型一样,视图文件通常与路由相关,尽管根本不需要。目录端的模板通常位于 中,除非它不存在,在这种情况下,将使用默认主题的模板。对于上面的搜索页面示例,该文件是 。对于包含三个部分的路线,它通常存在,尽管没有硬性规则。在 admin 中,大多数页面都遵循此内容,但列出项目的页面(如产品列表页面)位于 中,并且产品编辑窗体位于 。同样,这些不是设置的,而是默认购物车的标准。/catalog/view/theme/your-theme/template/
product/search.tpl
aaa/bbb_ccc.tpl
catalog/product_list.tpl
catalog/product_form.tpl
模板文件实际上只是另一个php文件,但扩展名为.tpl,实际上在控制器文件中运行,因此您可以在控制器中编码的所有内容都可以在模板文件中运行(尽管除非绝对必要,否则不建议这样做)
查询运行方式为
$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
OpenCart 具有预定义的变量来代替标准 、 、 、 、 和$_GET
$_POST
$_SESSION
$_COOKIE
$_FILES
$_REQUEST
$_SERVER
$_SESSION
使用其中数据是模仿$this->session->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库函数及其功能,其中大多数可以从目录或管理文件夹(控制器,模型,视图)中的任何位置调用
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 = ' > ') – 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']