Wie füge ich einen neuen Produkttyp in Magento 2 hinzu? (MageStackDay Rätselfrage 1)


40

MageStackDay Bonusfrage für 500 Punkte Kopfgeld UND die Möglichkeit, eine kostenlose Z-Ray-Lizenz für ein Jahr zu gewinnen. Weitere Infos finden Sie >> hier <<

Die Fragen werden vom Magento 2-Kernentwickler Anton Kril gestellt.

Frage:

Ich möchte Magento einen neuen Produkttyp hinzufügen. Wie würde ich das in Magento 2 dev beta machen?

Antworten:


40

Um einen neuen Produkttyp in Magento 2 hinzuzufügen, müssen Sie eine etc / product_types.xml in Ihrem Modul erstellen. In dieser Datei geben Sie an:

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

Dann erstelle die 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)
    {
    }
}

Dadurch wird der neue Produkttyp hinzugefügt. Jetzt können Sie diesen beim Erstellen eines neuen Produkts im Backend auswählen.

Demo-Produktoption

In der Datei product_type.xml können Sie auch Ihren eigenen Indexer oder Ihre eigene Preisberechnungsmethode angeben. Weitere Beispiele finden Sie im Code für die Produkttypen Bundle, ConfigureProduct, Downloadable und GroupedProduct.

Die vollständige Demo-Produkterweiterung finden Sie unter: https://github.com/Genmato/DemoProduct

BEARBEITEN:

Auf Wunsch von Anton ein bisschen mehr Funktionalität für den neuen Produkttyp (Wenn ich diese Woche ein bisschen mehr Zeit habe, werde ich versuchen, einige zusätzliche Modifikationen vorzunehmen).

Im Moment habe ich den Demo-Produkttyp mit einem Preis-Eingabefeld für das Kostenattribut aktualisiert: Kostenpreisattribut

Mit diesem Kostenattribut wird der Preis berechnet, wenn er im Frontend angezeigt wird (Preisattribut ist nicht verfügbar und wird nicht verwendet). Für dieses Beispiel habe ich cost * 1.25 verwendet (in Genmato \ DemoProduct \ Model \ Product \ Type \ Demo \ Price): Preisberechnung

Das Ergebnis im Frontend: Frontend-Ergebnis

Der vollständige aktualisierte Code ist verfügbar unter: https://github.com/Genmato/DemoProduct


Füge deiner Antwort einfach ein Tutorial hinzu und hoffe, du bekommst das Kopfgeld! Es gibt eine vollständige Anleitung zum Erstellen neuer Produkttypen: vimeo.com/116810487 Hier können Sie die Dokumentation einsehen
JoeyH

4
Es wäre großartig, wenn Sie mindestens einige Anpassungspunkte hinzufügen (Rendern, Preisberechnung usw.)
Anton Kril

1
@Anton: Ich habe den Demo-Produkttyp mit einer einfachen Preisberechnung basierend auf dem Kostenattribut aktualisiert. Wenn ich in den nächsten Tagen etwas mehr Zeit habe, werde ich versuchen, einige andere Modifikationen hinzuzufügen.
Vladimir Kerkhoff

Wie kann dies erweitert werden, um einen zusammengesetzten Produkttyp wie ein gruppiertes Produkt zu erstellen?
Sukeshini
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.