質問

申し訳ありませんが、私のQuetionを定義する方法がわからない。

マゼント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>
.

カートページの上書きのためのものです。

今私のクエリは、 magento 2 で同じことを達成する方法です。

ありがとうございました。

役に立ちましたか?

解決

マゼントの場合、レンダラーはcheckout_cart_item_renderers.xmlの下に定義されています。

  • app/code/Magento/Checkout/view/frontend/layout/checkout_cart_item_renderers.xml用デフォルトおよびシンプル製品レンダラー
  • Bundle Products用app/code/Magento/Bundle/view/frontend/layout/checkout_cart_item_renderers.xmlレンダラー
  • Virtual Products用app/code/Magento/Catalog/view/frontend/layout/checkout_cart_item_renderers.xmlレンダラー
  • 設定可能な製品のためのapp/code/Magento/ConfigurableProduct/view/frontend/layout/checkout_cart_item_renderers.xmlレンダラー
  • グループ化された製品のapp/code/Magento/Grouped/view/frontend/layout/checkout_cart_item_renderers.xmlレンダラー
  • app/code/Magento/GiftMessage/view/frontend/layout/checkout_cart_item_renderers.xmlこれは、ギフトメッセージ機能のための追加ブロックを異なるレンダラ
  • に追加するので特別なものです。
  • app/code/Magento/Wishlist/view/frontend/layout/checkout_cart_item_renderers.xmlこれは特別なもので、さまざまなレンダラー
  • にウィッシュリスト機能のための追加ブロックを追加します。

これらのレンダラを確認した後、どちらのレンダラをオーバーライドしたいかを見つけることができます。

あなたが言ったように、Magento\Checkout\Block\Cart\Item\Rendererである単純な製品レンダラーをオーバーライドしたいです。

ブロック全体を上書きしたい場合は、Magento 2設定を使用する必要があります。

モジュールでは、次のコンテンツを使用してdi.xmlフォルダの下にetcファイルを作成できます。

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

次のコンテンツでapp/code/Vendor/Module/Block/Checkout/Cart/Item/Renderer.phpクラスを作成する必要があります。

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

しかし、クラスレベル全体ではメソッドレベルで作業したい場合は、プラグインを使用する必要があります。

それは非常に具体的になることができるので、私があなたに例を与えるのは難しいですが、ここにプラグインについての役に立つリソースを見つけることができます:

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top