Bagaimana cara menambahkan jenis produk baru di Magento 2? (Pertanyaan misteri MageStackDay 1)

40

Pertanyaan bonus MageStackDay untuk hadiah 500pts DAN kemungkinan memenangkan lisensi Z-Ray gratis selama setahun. Info lebih lanjut dapat ditemukan >> di sini <<

Pertanyaan diberikan oleh pengembang inti Magento 2, Anton Kril.

Pertanyaan:

Saya ingin menambahkan jenis produk baru ke Magento. Bagaimana saya bisa melakukan ini dalam Magento 2 dev beta

Sander Mangel
sumber

Jawaban:

40

Untuk menambahkan jenis produk baru di Magento 2 Anda perlu membuat etc / product_types.xml dalam modul Anda. Dalam file ini Anda menentukan:

<?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>

Kemudian buat 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)
    {
    }
}

Ini akan menambah jenis produk baru dan sekarang Anda dapat memilih ini saat membuat produk baru di backend.

Opsi Produk Demo

Di product_type.xml Anda juga dapat menentukan pengindeksan sendiri atau metode perhitungan harga, untuk lebih banyak contoh lihat kode untuk tipe produk Bundle, ConfigureProduct, Downloadable, dan GroupedProduct.

Untuk ekstensi produk demo lengkap, lihat: https://github.com/Genmato/DemoProduct

EDIT:

Seperti yang diminta oleh Anton, sedikit fungsionalitas ekstra untuk jenis produk baru (Jika saya memiliki sedikit lebih banyak waktu minggu ini saya akan mencoba beberapa modifikasi tambahan).

Untuk saat ini saya memperbarui jenis Produk Demo dengan bidang input harga untuk atribut biaya: Atribut harga biaya

Atribut biaya ini digunakan untuk menghitung harga ketika ditampilkan di frontend (atribut harga tidak tersedia dan tidak digunakan). Untuk contoh ini saya menggunakan biaya * 1.25 (dalam Genmato \ DemoProduct \ Model \ Product \ Type \ Demo \ Price): Perhitungan harga

Hasil di frontend: Hasil frontend

Kode lengkap yang diperbarui tersedia di: https://github.com/Genmato/DemoProduct

Vladimir Kerkhoff
sumber
Cukup tambahkan tutorial ke jawaban Anda, semoga Anda mendapatkan hadiahnya! Ada tutorial lengkap tentang cara membuat jenis produk baru yang berada: vimeo.com/116810487 Lihat dokumentasi di sini: devdocs.magento.com
JoeyH
4
Akan lebih bagus jika Anda menambahkan setidaknya beberapa poin penyesuaian (rendering, perhitungan harga, dll)
Anton Kril
1
@Anton: Saya memperbarui jenis Produk Demo dengan perhitungan harga sederhana berdasarkan atribut biaya. Jika saya punya waktu lebih banyak beberapa hari ke depan saya akan mencoba menambahkan beberapa modifikasi lainnya.
Vladimir Kerkhoff
Bagaimana memperpanjang ini untuk membuat jenis produk komposit seperti produk yang dikelompokkan?
Sukeshini