Để thêm loại sản phẩm mới trong Magento 2, bạn cần tạo một etc / product_types.xml trong mô-đun của mình. Trong tệp này, bạn chỉ định:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../Catalog/etc/product_types.xsd">
<type name="demoproduct" label="Demo Product" modelInstance="Genmato\DemoProduct\Model\Product\Type\Demo" indexPriority="25" sortOrder="25">
<customAttributes>
<attribute name="refundable" value="true"/>
</customAttributes>
</type>
</config>
Sau đó tạo modelInstance:
/**
* @category Genmato
* @package Genmato_MageStackProduct
* @copyright Copyright (c) 2015 Genmato BV (https://genmato.com)
*/
namespace Genmato\DemoProduct\Model\Product\Type;
class Demo extends \Magento\Catalog\Model\Product\Type\AbstractType
{
/**
* Delete data specific for Simple product type
*
* @param \Magento\Catalog\Model\Product $product
* @return void
*/
public function deleteTypeSpecificData(\Magento\Catalog\Model\Product $product)
{
}
}
Điều này sẽ thêm loại sản phẩm mới và bây giờ bạn có thể chọn loại này khi tạo một sản phẩm mới trong phần phụ trợ.
Trong sản phẩm_type.xml cũng có thể chỉ định phương pháp tính toán giá hoặc chỉ mục của riêng bạn, để biết thêm ví dụ, hãy xem mã cho các loại sản phẩm Gói, Cấu hình sản phẩm, Tải xuống và Nhóm sản phẩm.
Để biết phần mở rộng sản phẩm demo hoàn chỉnh, hãy xem: https://github.com/Genmato/DemoSản phẩm
BIÊN TẬP:
Theo yêu cầu của Anton một chút chức năng bổ sung cho loại sản phẩm mới (Nếu tôi có thêm một chút thời gian trong tuần này, tôi sẽ cố gắng thực hiện một số sửa đổi bổ sung).
Hiện tại tôi đã cập nhật loại Sản phẩm Demo với trường nhập giá cho thuộc tính chi phí:
Thuộc tính chi phí này được sử dụng để tính giá khi nó được hiển thị ở lối vào (thuộc tính price không có sẵn và không được sử dụng). Trong ví dụ này, tôi đã sử dụng chi phí * 1,25 (trong Genmato \ DemoSản phẩm \ Model \ Product \ Type \ Demo \ Price):
Kết quả trên frontend:
Mã cập nhật hoàn chỉnh có sẵn trên: https://github.com/Genmato/DemoSản phẩm