Comment ajouter un nouveau type de produit dans Magento 2? (Question mystère 1 de MageStackDay)


40

Question bonus MageStackDay pour Bounty 500 pts ET la possibilité de gagner une licence Z-Ray gratuite pendant un an. Plus d'infos peuvent être trouvées >> ici <<

Les questions sont fournies par Anton Kril, développeur principal de Magento 2.

Question:

Je souhaite ajouter un nouveau type de produit à Magento. Comment pourrais-je faire cela dans Magento 2 dev beta

Réponses:


40

Pour ajouter un nouveau type de produit dans Magento 2, vous devez créer un fichier etc / product_types.xml dans votre module. Dans ce fichier, vous spécifiez:

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

Puis créez le 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)
    {
    }
}

Cela ajoutera le nouveau type de produit et vous pouvez maintenant le sélectionner lors de la création d'un nouveau produit dans le backend.

Option de produit de démonstration

Dans product_type.xml, il est également possible de spécifier votre propre indexeur ou méthode de calcul du prix. Pour plus d'exemples, reportez-vous au code des types de produits Bundle, ConfigureProduct, Downloadable et GroupedProduct.

Pour une extension complète du produit de démonstration, voir: https://github.com/Genmato/DemoProduct

MODIFIER:

Comme demandé par Anton, un peu plus de fonctionnalités pour le nouveau type de produit (si j’ai un peu plus de temps cette semaine, je vais essayer d’apporter quelques modifications supplémentaires).

Pour l'instant, j'ai mis à jour le type de produit de démonstration avec un champ de saisie de prix pour l'attribut de coût: Attribut prix de revient

Cet attribut de coût est utilisé pour calculer le prix lorsqu'il est affiché dans l'interface frontale (l'attribut price n'est pas disponible et n'est pas utilisé). Pour cet exemple, j'ai utilisé cost * 1.25 (dans Genmato \ DemoProduct \ Model \ Product \ Type \ Demo \ Price): Calcul du prix

Le résultat sur le frontend: Résultat frontend

Le code complet et mis à jour est disponible sur: https://github.com/Genmato/DemoProduct


En ajoutant simplement un tutoriel à votre réponse, j'espère que vous obtiendrez la prime! Un didacticiel complet sur la création de nouveaux types de produits se trouve à l' adresse suivante : vimeo.com/116810487 Consultez la documentation ici: devdocs.magento.com
JoeyH

4
Ce serait bien si vous ajoutiez au moins quelques points de personnalisation (rendu, calcul du prix, etc.)
Anton Kril

1
@Anton: J'ai mis à jour le type de produit Demo avec un calcul de prix simple basé sur l'attribut cost. Si j'ai un peu plus de temps les prochains jours, j'essaierai d'ajouter d'autres modifications.
Vladimir Kerkhoff le

Comment étendre cela pour créer un type de produit composite tel qu'un produit groupé?
Sukeshini
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.