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.
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:
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):
Das Ergebnis im Frontend:
Der vollständige aktualisierte Code ist verfügbar unter: https://github.com/Genmato/DemoProduct