gpt4 book ai didi

php - 如何成为 OpenCart 大师?

转载 作者:行者123 更新时间:2023-12-01 17:30:43 31 4
gpt4 key购买 nike

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

2年前关闭。



Improve this question




除了官方论坛上的一些api调用外,他们似乎没有任何文档。我有 Zend 框架和 CodeIgniter 框架的经验。任何 OpenCart 大师可以推荐我在最短的时间内学习和掌握它的最佳方法吗?我必须很快用它做一个大项目。

最佳答案

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

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

在下文中,您将看到购物车目录侧的示例。除了相关部分中注明的 View 外,管理端在功能上是相同的

了解图书馆

所有的库功能都可以通过 Controller 、模型和 View 使用 $this->library_name 访问。 .所有这些都可以在 /system/library/ 中找到。文件夹。例如,要访问当前购物车的产品,您需要使用 Cart类,在 /system/library/cart.php 中并且可以使用 $this->cart->getProducts() 访问

常用物品

  • customer.php - 客户相关功能
  • user.php - 管理员用户相关功能
  • cart.php - 购物车相关功能
  • config.php - 所有设置都从这里加载
  • url.php - URL 生成函数


  • 了解路由参数

    OpenCart 的框架依赖于 route=aaa/bbb/ccc在查询字符串参数中知道要加载什么,并且是查找需要为每个页面编辑的文件的基础功能。大多数路由实际上只使用 aaa/bbb应该被视为两部分,但有些包含三部分 aaa/bbb/ccc第一部分 aaa通常与通用文件夹中的文件夹相关,例如 Controller 或模板文件夹。第二部分通常与文件名有关,没有相关的 .php.tpl扩展名。第三部分在下面的“理解 Controller ”部分解释

    理解语言

    语言存储在 /catalog/language/ your-language 中的文件夹子文件夹。其中,跨页面使用的一般文本值存储在 your-language.php 中。文件夹内的文件,因此对于目录端的英语,您将在 catalog/language/english/english.php 中找到值。 .对于特定的页面文本,您需要 route页面(通常是这种情况,但并非总是如此,因为您可以指定任何您喜欢的语言文件)。比如搜索页面有路由 product/search ,因此可以在 catalog/language/english/product/search.php 中找到该页面的特定语言文本。 (注意文件的名称和子文件夹与后跟 .php 的路径匹配。

    要在 Controller 中加载语言,您可以使用
    $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 即可使用方法

    了解 Controller

    Controller 基于 route 加载并且很容易理解。 Controller 位于 /catalog/controller/文件夹。继续上一个示例,搜索页面的 Controller 位于 /product/search.php 中。在这个文件夹中。再次注意后面的路由 .php使用。

    打开 Controller 文件,您将看到扩展 Controller 的 Pascal Case 类名。类,称为 ControllerProductSearch .这也是特定于路线的, Controller后跟子文件夹名称和文件名,扩展名不大写。大写实际上并不是必需的,但为了便于阅读,建议使用大写。值得注意的是,类名不从子文件夹和文件名中获取除字母和数字以外的任何值。下划线被删除。

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

    理解模型

    OpenCart 中的模型可在 /catalog/model/ 中找到文件夹并根据功能而不是路由进行分组,因此您需要通过以下方式将它们加载到 Controller 中
    $this->load->model('xxx/yyy');

    这将加载子文件夹 xxx 中的文件叫 yyy.php .然后可以通过对象使用
    $this->model_xxx_yyy

    和 Controller 一样,你只能调用它的 public方法。例如,要调整图像大小,您可以使用 tool/image模型并调用其 resize方法如下
    $this->load->model('tool/image');
    $this->model_tool_image->resize('image.png', 300, 200);

    从 Controller 了解 View 中的变量分配

    为了将值从 Controller 传递给 View ,您只需要将数据分配给 $this->data变量,它本质上是一个键 => 值对的数组。举个例子
    $this->data['example_var'] = 123;

    如果您熟悉 extract(),在 View 中访问它应该很容易理解。将每个键转换为变量的方法。所以 example_var key 变成 $example_var并且可以在 View 中访问。

    理解主题

    主题仅对目录端可用,基本上是模板、样式表和主题图像的文件夹。主题文件夹放在 /catalog/view/theme/文件夹后跟主题名称。文件夹名称并不重要,除了 default文件夹

    管理端使用 /admin/view/template/ (从路径中跳过 /theme/theme-name/ 因为它不允许不同的主题)

    模板文件位于 template主题文件夹中的文件夹。如果当前选定的主题没有任何模板可用,则使用默认文件夹的模板作为后备。这意味着可以使用很少的文件创建主题并且仍然可以完全发挥作用。它还可以减少代码重复和升级时出现的问题

    理解 View (模板)

    与语言和模型一样, View 文件通常与路线相关,但根本不必如此。目录端的模板通常可以在 /catalog/view/theme/your-theme/template/ 中找到。除非它不存在,在这种情况下将使用默认主题的模板。对于我们上面的搜索页面示例,文件是 product/search.tpl .对于三部分的路由,一般在 aaa/bbb_ccc.tpl虽然没有硬性规定。在管理员中,大多数页面都遵循此规则,但列出项目的页面(如产品列表页面)位于 catalog/product_list.tpl 中。产品编辑表在 catalog/product_form.tpl .同样,这些不是设置,而是默认购物车的标准。

    模板文件实际上只是另一个 php 文件,但扩展名为 .tpl 并且实际上在 Controller 文件中运行,因此您可以在 Controller 中编码的所有内容都可以在模板文件中运行(尽管不推荐,除非绝对必要的)

    了解数据库对象

    查询运行使用
    $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 编辑其中 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
    总结

    虽然以上内容不是开发人员的防弹指南,但希望它可以作为入门者的良好起点

    关于php - 如何成为 OpenCart 大师?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13478995/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com