Як додати новий тип продукту в Magento 2? (Таємниче питання MageStackDay 1)


40

Бонусне питання MageStackDay за Bounty 500 та можливість виграти безкоштовну ліцензію на Z-Ray протягом року. Більше інформації можна знайти >> тут <<

Питання надає розробник ядра Magento 2 Антон Криль.

Питання:

Я хочу додати новий тип продукту до Magento. Як би мені це зробити в бета-версії Magento 2 dev

Відповіді:


40

Для додавання нового типу продукту в Magento 2 вам потрібно створити etc / product_types.xml у своєму модулі. У цьому файлі ви вказуєте:

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

Потім створіть модельInstance:

/**
 * @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)
    {
    }
}

Це додасть новий тип продукту, і тепер ви можете обрати це під час створення нового продукту в резервному часі.

Варіант демонстраційного продукту

У product_type.xml також можна вказати власний метод індексатора чи розрахунку ціни, для отримання додаткових прикладів див. Код для типів продуктів Bundle, ConfigureProduct, Downloadable та GroupedProduct.

Повне розширення демо-продукту див. На веб-сайті : https://github.com/Genmato/DemoProduct

Редагувати:

Як вимагає Антон, трохи додаткової функціональності для нового типу товару (Якщо у мене на цьому тижні трохи більше часу, я спробую внести деякі додаткові модифікації).

Наразі я оновив тип продукту Demo з полем для введення ціни на атрибут вартості: Атрибут ціни собівартості

Цей атрибут вартості використовується для обчислення ціни, коли він відображається на фронті (ціновий атрибут недоступний і не використовується). Для цього прикладу я використав вартість * 1,25 (у Genmato \ DemoProduct \ Model \ Product \ Type \ Demo \ Price): Розрахунок ціни

Результат на фронті: Результат Frontend

Повний оновлений код доступний на веб- сайті: https://github.com/Genmato/DemoProduct


Просто додавши підручник до своєї відповіді, сподіваюся, що ви отримаєте винагороду! Є повний посібник зі створення нових типів продуктів: vimeo.com/116810487 Переглянути документацію можна тут: devdocs.magento.com
JoeyH

4
Було б чудово, якби ви додали принаймні кілька точок налаштування (візуалізація, розрахунок цін тощо)
Антон Кріль,

1
@Anton: я оновив тип продукту Demo з простим розрахунком ціни на основі атрибуту вартості. Якщо у мене буде трохи більше часу, то наступні дні я спробую додати деякі інші модифікації.
Володимир Керхофф

Як розширити це, щоб створити складений тип товару, такий як згрупований продукт?
Сукешині
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.