文档 下载安装 问答 主机

创建新的产品类型

在 Magento2 中,支持创建新的产品类型。默认有五个产品类型:简单产品,可配置产品,绑定产品,虚拟产品和可下载产品。然而,在某些情况下,现有产品类型不能满足需求,同时,你的产品也不符合现有的产品类型。这也是本文需要解决的问题。

概览

  • 第一步,生成 registration.php 文件;
  • 第二步,添加 NewProductType 模型代码;
  • 第三步,添加价格模型;
  • 第四步,发部新产品类型。

第一步,生成 registration.php 文件

  • 新建文件 app\code\Mageplaza\HelloWorld\registration.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'Mageplaza_HelloWorld',
    __DIR__
);
  • 创建 app\code\Mageplaza\HelloWorld\etc\module.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="Mageplaza_HelloWorld" setup_version="1.0.0">
 
    </module>
</config>
  • 创建决定新产品类型模型的文件 etc/product_types.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Catalog:etc/product_types.xsd">
    <type name="new_product_type" label="New Product Type" modelInstance="Mageplaza\HelloWorld\Model\Product\Type\NewProductType" indexPriority="60" sortOrder="80" isQty="true">
        <priceModel instance="Mageplaza\HelloWorld\Model\Product\Price" />
    </type>
</config>

注意:

  • name:新产品类型的名字
  • label:展示在 Magento 后台的标签
  • modelInstance:产品类型的属性
  • priceModel:新产品的价格

第二步,添加 NewProductType 模型代码

  • 在文件 Mageplaza\HelloWorld\Model\Product\Type\NewProductType model 中添加以下代码
<?php
 
namespace Mageplaza\HelloWorld\Model\Product\Type;
 
class NewProductType extends \Magento\Catalog\Model\Product\Type\AbstractType {
}
  • 接下来就可以重新一些方法,并且可以做出你想要的改变

第三步,添加价格模型

  • 基于 Magento\Catalog\Model\Product\Type\Price 新建模型(model) Mageplaza\HelloWorld\Model\Product\Price
<?php
 namespace Mageplaza\HelloWorld\Model\Product;
 class Price extends \Magento\Catalog\Model\Product\Type\Price
 {

 }
  • 在扩展了类 Magento\Catalog\Model\Product\Type\Price 之后,还可以通过一些自定义方法把新的产品类型设置为通用类型

第四步,发部新产品类型

完成以上步骤后,可以去 Magento 后台进行查看。新的产品类型会跟默认产品类型展示到一起。

本教程翻译自Mageplaza模块开发系列,其他内容请点击下面链接: