Magento 2:substituir o bloco de classe por tipo de produto
-
29-09-2020 - |
Pergunta
Desculpe, mas eu não sei como definir meu quetion.Deixe-me mostrar a você o código :
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>
Código acima é para substituir simples entrada de produto no carrinho de compras da página.
Agora a minha pergunta é como posso conseguir a mesma coisa no Magento 2.
Obrigado.
Solução
No Magento, os processadores são definidos de acordo com checkout_cart_item_renderers.xml
, há vários deles:
app/code/Magento/Checkout/view/frontend/layout/checkout_cart_item_renderers.xml
para o padrão e simples de produtos renderizadoresapp/code/Magento/Bundle/view/frontend/layout/checkout_cart_item_renderers.xml
para empacotar produtos renderizadoresapp/code/Magento/Catalog/view/frontend/layout/checkout_cart_item_renderers.xml
para produtos virtuais renderizadoresapp/code/Magento/ConfigurableProduct/view/frontend/layout/checkout_cart_item_renderers.xml
para produtos configuráveis renderizadoresapp/code/Magento/Grouped/view/frontend/layout/checkout_cart_item_renderers.xml
para agrupados produtos renderizadoresapp/code/Magento/GiftMessage/view/frontend/layout/checkout_cart_item_renderers.xml
este é especial, pois adiciona bloco extra para o presente recurso de mensagem para os diferentes renderizadoresapp/code/Magento/Wishlist/view/frontend/layout/checkout_cart_item_renderers.xml
esta é especial demais, como ele adiciona bloco extra para a lista de desejos recurso para os diferentes renderizadores
Depois de verificar esses processadores, você pode encontrar qual o processador que você deseja substituir.
Como você disse, você deseja substituir o produto simples, que é um renderizador Magento\Checkout\Block\Cart\Item\Renderer
.
Se você deseja substituir o bloco inteiro, você deve usar o Magento 2 preferências:
No seu módulo, você pode criar uma di.xml
arquivo sob o etc
pasta com o seguinte conteúdo:
<?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>
Em seguida, você precisa criar o app/code/Vendor/Module/Block/Checkout/Cart/Item/Renderer.php
classe com o seguinte conteúdo:
<?php
namespace Vendor\Module\Block\Checkout\Cart\Item;
class Renderer extends \Magento\Checkout\Block\Cart\Item\Renderer
{
public function theFunctionYouWantToRewrite()
{
// Do your custom stuff
}
}
No entanto, se você deseja trabalhar no método níveis e não em toda a classe de nível, você deve usar plugins
Como ele pode ser muito específica, é difícil para mim dar-lhe um exemplo, mas você pode encontrar recursos úteis sobre plugins aqui: