Pregunta

Lo siento, pero no sé cómo definir mi pregunta. Déjame mostrarte el 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>

El código anterior sirve para anular la entrada simple del producto en la página del carrito.

Ahora mi consulta es ¿cómo puedo lograr lo mismo en Magento 2.

Gracias.

¿Fue útil?

Solución

En Magento, los renderizadores se definen en checkout_cart_item_renderers.xml, hay varios de ellos:

  • app/code/Magento/Checkout/view/frontend/layout/checkout_cart_item_renderers.xml para renderizadores de productos simples y predeterminados
  • app/code/Magento/Bundle/view/frontend/layout/checkout_cart_item_renderers.xml para renderizadores de productos agrupados
  • app/code/Magento/Catalog/view/frontend/layout/checkout_cart_item_renderers.xml para renderizadores de productos virtuales
  • app/code/Magento/ConfigurableProduct/view/frontend/layout/checkout_cart_item_renderers.xml para renderizadores de productos configurables
  • app/code/Magento/Grouped/view/frontend/layout/checkout_cart_item_renderers.xml para renderizadores de productos agrupados
  • app/code/Magento/GiftMessage/view/frontend/layout/checkout_cart_item_renderers.xml Este es especial ya que agrega un bloque adicional para la función de mensaje de regalo a los diferentes renderizadores.
  • app/code/Magento/Wishlist/view/frontend/layout/checkout_cart_item_renderers.xml Este también es especial ya que agrega un bloque adicional para la función de lista de deseos a los diferentes renderizadores.

Después de verificar esos renderizadores, puede encontrar qué renderizador desea anular.

Como dijiste, deseas anular el renderizador de producto simple, que es un Magento\Checkout\Block\Cart\Item\Renderer.

Si desea anular todo el bloque, debe utilizar las preferencias de Magento 2:

En su módulo, puede crear un di.xml archivo bajo el etc carpeta con el siguiente contenido:

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

Entonces necesitas crear el app/code/Vendor/Module/Block/Checkout/Cart/Item/Renderer.php clase con el siguiente contenido:

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

Sin embargo, si desea trabajar en los niveles de método y no en todo el nivel de clase, debe utilizar complementos.

Como puede ser muy específico, es difícil para mí darte un ejemplo, pero puedes encontrar recursos útiles sobre complementos aquí:

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top