Magento 2:blockklasse nach Produkttyp überschreiben
-
29-09-2020 - |
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.
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 Produktrendererapp/code/Magento/Bundle/view/frontend/layout/checkout_cart_item_renderers.xml
für Renderer von Bundle-Produktenapp/code/Magento/Catalog/view/frontend/layout/checkout_cart_item_renderers.xml
für Renderer virtueller Produkteapp/code/Magento/ConfigurableProduct/view/frontend/layout/checkout_cart_item_renderers.xml
für konfigurierbare Produkte Rendererapp/code/Magento/Grouped/view/frontend/layout/checkout_cart_item_renderers.xml
für Renderer für gruppierte Produkteapp/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ügtapp/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: