Question

Désolé mais je ne sais pas comment définir ma question. Laissez-moi vous montrer le code :

Magento1 :

 <checkout_cart_index>
    <reference name="checkout.cart">
        <action method="addItemRender">
            <type>simple</type>
            <block>mymodule/checkout_cart_item_renderer_simple</block>
            <template>checkout/cart/item/default.phtml</template>
        </action>
     </reference>
</checkout_cart_index>

Le code ci-dessus sert à remplacer la simple entrée du produit dans la page du panier.

Maintenant, ma question est de savoir comment puis-je réaliser la même chose Magento2.

Merci.

Était-ce utile?

La solution

Dans Magento, les moteurs de rendu sont définis sous checkout_cart_item_renderers.xml, il y en a plusieurs :

  • app/code/Magento/Checkout/view/frontend/layout/checkout_cart_item_renderers.xml pour les rendus de produits simples et par défaut
  • app/code/Magento/Bundle/view/frontend/layout/checkout_cart_item_renderers.xml pour les moteurs de rendu de produits groupés
  • app/code/Magento/Catalog/view/frontend/layout/checkout_cart_item_renderers.xml pour les moteurs de rendu de produits virtuels
  • app/code/Magento/ConfigurableProduct/view/frontend/layout/checkout_cart_item_renderers.xml pour les moteurs de rendu de produits configurables
  • app/code/Magento/Grouped/view/frontend/layout/checkout_cart_item_renderers.xml pour les rendus de produits groupés
  • app/code/Magento/GiftMessage/view/frontend/layout/checkout_cart_item_renderers.xml celui-ci est spécial car il ajoute un bloc supplémentaire pour la fonction de message cadeau aux différents moteurs de rendu
  • app/code/Magento/Wishlist/view/frontend/layout/checkout_cart_item_renderers.xml celui-ci est également spécial car il ajoute un bloc supplémentaire pour la fonctionnalité de liste de souhaits aux différents moteurs de rendu

Après avoir vérifié ces moteurs de rendu, vous pouvez trouver le moteur de rendu que vous souhaitez remplacer.

Comme vous l'avez dit, vous souhaitez remplacer le simple moteur de rendu de produit qui est un Magento\Checkout\Block\Cart\Item\Renderer.

Si vous souhaitez remplacer tout le bloc, vous devez utiliser les préférences de Magento 2 :

Dans votre module, vous pouvez créer un di.xml dossier sous le etc dossier avec le contenu suivant :

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <preference for="Magento\Checkout\Block\Cart\Item\Renderer" type="Vendor\ModuleName\Block\Checkout\Cart\Item\Renderer" />  
</config>

Ensuite, vous devez créer le app/code/Vendor/Module/Block/Checkout/Cart/Item/Renderer.php classe avec le contenu suivant :

<?php
namespace Vendor\Module\Block\Checkout\Cart\Item;
class Renderer extends \Magento\Checkout\Block\Cart\Item\Renderer
{
    public function theFunctionYouWantToRewrite()
    {
        // Do your custom stuff
    }
}

Cependant, si vous souhaitez travailler au niveau des méthodes et non au niveau de la classe entière, vous devez utiliser des plugins.

Comme cela peut être très précis, il m'est difficile de vous donner un exemple mais vous pouvez trouver des ressources utiles sur les plugins ici :

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top