OpenCart在自定义php脚本中添加产品

时间:2016-08-07 23:35:14

标签: php registry opencart opencart2.x

我想通过我的脚本添加与OpenCart无关的产品。

例如: somedir/index.php。我试着这样做:

$productData = array(
    'model' => 'ABC123',

    'name'=>'aaa',
    'description'=>'aaa',
    'tag'=>'aaa',
    ...
);

require_once ('../../system/engine/model.php');
require_once ('../../admin/model/catalog/product.php');

$a= new ModelCatalogProduct();
$a->addProduct($productData);

但是有很多功能需要触发。如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

OpenCart使用所谓的MVC模式。这个模板在OpenCart中以非常专业和深度耦合的方式工作,因此如果您想在代码中使用控制器和模型,则需要路由系统的上下文。

此外,它实际上取决于您使用的版本,语义是否正确,因此很难说。从概念上讲,你会做这样的事情:   - 在/ admin / controller目录结构中定义一个新的控制器,即/admin/controller/tool/product_import.php

  • 调用扩展Controller的控制器ControllerToolProductImport;
  • 创建公共职能索引()
  • 让它加载模型,如$ this-> load-> model(“catalog / product”);
  • 现在模型功能可用,您可以像$this->model_catalog_product->addProduct($productData);
  • 一样使用它
  • 此公共函数索引可以由https://hostname:port/admin/index.php?route=too/product_import&token=ABC触发(一旦登录到admin部分,您将看到令牌应该是什么)。要直接触发该控制器中的其他功能(需要公开),您可以轻松扩展该路径。因此,对于公共函数doSomething(),它将变为https://hostname:port/admin/index.php?route=too/product_import/doSomething&token=ABC
  • 从admin部分触发此功能时,您将使用OpenCart功能执行此操作。根据您的版本,对于2.2.0.0,这将是这样的:

    $this->url->link('tool/product_import', 'token=' . $this->session->data['token'], true)