Frage

Tut mir leid, aber ich weiß nicht, wie ich meine Frage definieren soll.Lass mich dir Code zeigen :

Magento 1 :

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

Der obige Code dient zum Überschreiben der einfachen Produkteingabe auf der Warenkorbseite.

Jetzt ist meine Frage, wie ich das Gleiche erreichen kann Magento 2.

Danke.

War es hilfreich?

Lösung

In Magento werden die Renderer unter definiert checkout_cart_item_renderers.xml, es gibt mehrere von ihnen:

  • app/code/Magento/Checkout/view/frontend/layout/checkout_cart_item_renderers.xml für Standard- und einfache Produktrenderer
  • app/code/Magento/Bundle/view/frontend/layout/checkout_cart_item_renderers.xml für Renderer von Bundle-Produkten
  • app/code/Magento/Catalog/view/frontend/layout/checkout_cart_item_renderers.xml für Renderer virtueller Produkte
  • app/code/Magento/ConfigurableProduct/view/frontend/layout/checkout_cart_item_renderers.xml für konfigurierbare Produkte Renderer
  • app/code/Magento/Grouped/view/frontend/layout/checkout_cart_item_renderers.xml für Renderer für gruppierte Produkte
  • app/code/Magento/GiftMessage/view/frontend/layout/checkout_cart_item_renderers.xml dieser ist etwas Besonderes, da er den verschiedenen Renderern einen zusätzlichen Block für die Geschenknachrichtenfunktion hinzufügt
  • app/code/Magento/Wishlist/view/frontend/layout/checkout_cart_item_renderers.xml dieser ist auch etwas Besonderes, da er den verschiedenen Renderern einen zusätzlichen Block für die Wunschlisten-Funktion hinzufügt

Nachdem Sie diese Renderer überprüft haben, können Sie herausfinden, welchen Renderer Sie überschreiben möchten.

Wie Sie sagten, möchten Sie den einfachen Produktrenderer überschreiben, der ein Magento\Checkout\Block\Cart\Item\Renderer.

Wenn Sie den gesamten Block überschreiben möchten, sollten Sie die Magento 2-Einstellungen verwenden:

In Ihrem Modul können Sie eine erstellen di.xml datei unter dem etc ordner mit folgendem Inhalt:

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

Dann müssen Sie die erstellen app/code/Vendor/Module/Block/Checkout/Cart/Item/Renderer.php klasse mit folgendem Inhalt:

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

Wenn Sie jedoch auf den Methodenebenen und nicht auf der gesamten Klassenebene arbeiten möchten, sollten Sie Plugins verwenden

Da es sehr spezifisch sein kann, fällt es mir schwer, Ihnen ein Beispiel zu geben, aber Sie finden hier nützliche Ressourcen zu Plugins:

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top