चेकआउट सारांश Magento 2 में कस्टम उत्पाद विशेषता जोड़ें


14

मैं Magento 2 में चेकआउट में सारांश अनुभाग पर आइटम की सूची में एक कस्टम उत्पाद विशेषता जोड़ने की कोशिश कर रहा हूं। टेम्पलेट फ़ाइल Magento_Checkout/web/template/summary/item/details.htmlउत्पाद नाम से पहले कस्टम विशेषता के मूल्य को प्रदर्शित करने के लिए है और देख रहा है। इस मूल्य को को टेम्पलेट में कैसे जोड़ा जाता है, इस पर कोई विचार? ऐसा लगता है कि इस के लिए एक और सवाल यह है कि यहाँ लेकिन जवाब कभी नहीं किया गया था।



1
@ अर्जुन यह अलग है। यह संदर्भित लेख वास्तव में कार्ट पेज चेकआउट नहीं दिखाता है। गाड़ी एक साधारण phtml टेम्पलेट है। चेकआउट एक कू पेज है और मिनी-कार्ट की तुलना में कहीं और से इसका स्रोत मिल रहा है। यह सुनिश्चित नहीं है कि मिनी कार्ट, कार्ट और चेकआउट में प्रदर्शित सभी कार्ट आइटम अलग-अलग तरीकों से क्यों बनाए गए हैं। लेकिन वास्तविक चेकआउट सारांश वह है जहां मुझे यह देखने की आवश्यकता है कि कस्टम विशेषता कैसे जोड़ें।
सुदोप्रत sud

@sudopratt, क्या आपको इस बारे में विचार है कि, Magento 2 में चेकआउट में सारांश अनुभाग पर आइटम की सूची में कस्टम उत्पाद विशेषता कैसे जोड़ें?
सरफराज सिपाई

जवाबों:


16

आपको उसके लिए एक प्लगइन बनाना होगा। मैं समरी ऑर्डर करने के लिए प्रोडक्ट फ्लेवर जोड़ना चाहता था। यह वह तरीका है जिससे मैंने एक प्लगइन बनाया और जो मैंने चाहा वह हासिल किया।

वेंडर = सेजल

फ़ाइलें जिन्हें आपको बनाने की आवश्यकता है:

  1. पंजीकरण। app\code\Sejal\Flavor\registration.php
  2. di.xml: app\code\Sejal\Flavor\etc\di.xml
  3. मॉड्यूल। xml: app\code\Sejal\Flavor\etc\module.xml
  4. कॉन्फ़िगप्रोविडरप्लगिन.php: app\code\Sejal\Flavor\Plugin\ConfigProviderPlugin.php
  5. details.html: की प्रतिलिपि vendor\magento\module-checkout\view\frontend\web\template\summary\item\details.html

आप इस तरह अपने विषय में इस फ़ाइल को ओवरराइड कर सकते हैं

app\design\frontend\Vendor\themename\Magento_Checkout\web\template\summary\item\details.html

कोड: Registration.php

<?php

\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'Sejal_Flavor',
    __DIR__
);

di.xml

<?xml version="1.0"?>

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <type name="Magento\Checkout\Model\DefaultConfigProvider">
        <plugin name="AddAttPlug" type="Sejal\Flavor\Plugin\ConfigProviderPlugin" />
    </type>
</config>

module.xml

<?xml version="1.0"?>

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="Sejal_Flavor" setup_version="1.0.0">
    </module>
</config>

ConfigProviderPlugin.php

<?php

namespace Sejal\Flavor\Plugin;

class ConfigProviderPlugin extends \Magento\Framework\Model\AbstractModel
{

    public function afterGetConfig(\Magento\Checkout\Model\DefaultConfigProvider $subject, array $result)
    {

        $items = $result['totalsData']['items'];

        $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
        for($i=0;$i<count($items);$i++){

            $quoteId = $items[$i]['item_id'];
            $quote = $objectManager->create('\Magento\Quote\Model\Quote\Item')->load($quoteId);
            $productId = $quote->getProductId();
            $product = $objectManager->create('\Magento\Catalog\Model\Product')->load($productId);
            $productFlavours = $product->getResource()->getAttribute('flavors')->getFrontend()->getValue($product);         
            if($productFlavours == 'No' || $productFlavours == 'NA'){
                $productFlavours = '';
            }
            $items[$i]['flavor'] = $productFlavours;
        }
        $result['totalsData']['items'] = $items;
        return $result;
    }

}

details.html

Copy vendor\magento\module-checkout\view\frontend\web\template\summary\item\details.html 

विषय में और जोड़ें

<div class="product-item-flavor" data-bind="text: $parent.flavor"></div>

नीचे

<strong class="product-item-name" data-bind="text: $parent.name"></strong>

बस! आशा है ये मदद करेगा!


मैं आगे बढ़ने की कोशिश में आगे बढ़ने की कोशिश की है, लेकिन इसके काम नहीं कर रहा है। मैं कैसे कर सकता हूँ ?
मनीष माहेश्वरी

@ सैजल शाह कृपया जवाब दें magento.stackexchange.com/questions/279918/…
Shafeel Sha

@ सेज़ल शाह यहाँ कैसे हालत जोड़ने के लिए
सुमीत बजाज

1
यह शिपिंग कदम के लिए बहुत अच्छा काम करता है, लेकिन बिलिंग कदम पर। उत्पाद-स्वाद-स्वाद खाली रहता है
jonasG

सेजल ने यहां मेरे सवाल का जवाब दिया: magento.stackexchange.com/questions/178398/…
jonasG

3

यदि आप अपने कस्टम विशेषता को क्रम सारांश में जोड़ना चाहते हैं, तो आपको ओवरराइड करने की आवश्यकता है: (लेआउट) 1) checkout_cart_india.in:

<referenceBlock name="checkout.cart.totals">
        <arguments>
            <argument name="jsLayout" xsi:type="array">
                <item name="components" xsi:type="array">
                    <item name="block-totals" xsi:type="array">
                        <item name="children" xsi:type="array">
                            <item name="processingfee" xsi:type="array">
                                <item name="component"  xsi:type="string">Dedicated_Processingfee/js/view/checkout/cart/totals/processingfee</item>
                                <item name="sortOrder" xsi:type="string">20</item>
                                <item name="config" xsi:type="array">
                                    <item name="template" xsi:type="string">Dedicated_Processingfee/checkout/cart/totals/processingfee</item>
                                    <item name="title" xsi:type="string" translate="true">Processing Fee</item>
                                </item>
                            </item>
                        </item>
                    </item>
                </item>
            </argument>
        </arguments>
    </referenceBlock>

2) checkout_index_index:

<referenceBlock name="checkout.root">
        <arguments>
            <argument name="jsLayout" xsi:type="array">
                <item name="components" xsi:type="array">
                    <item name="checkout" xsi:type="array">
                        <item name="children" xsi:type="array">

                            <item name="sidebar" xsi:type="array">
                                <item name="children" xsi:type="array">
                                    <item name="summary" xsi:type="array">
                                        <item name="children" xsi:type="array">
                                            <item name="totals" xsi:type="array">
                                                <item name="children" xsi:type="array">
                                                    <item name="processingfee" xsi:type="array">
                                                        <item name="component"  xsi:type="string">Dedicated_Processingfee/js/view/checkout/cart/totals/processingfee</item>
                                                        <item name="sortOrder" xsi:type="string">20</item>
                                                        <item name="config" xsi:type="array">
                                                            <item name="template" xsi:type="string">Dedicated_Processingfee/checkout/cart/totals/processingfee</item>
                                                            <item name="title" xsi:type="string" translate="true">Processing Fee</item>
                                                        </item>
                                                    </item>
                                                </item>
                                            </item>
                                            <item name="cart_items" xsi:type="array">
                                                <item name="children" xsi:type="array">
                                                    <item name="details" xsi:type="array">
                                                        <item name="children" xsi:type="array">
                                                            <item name="subtotal" xsi:type="array">
                                                                <item name="component" xsi:type="string">Magento_Tax/js/view/checkout/summary/item/details/subtotal</item>
                                                            </item>
                                                        </item>
                                                    </item>
                                                </item>
                                            </item>
                                        </item>
                                    </item>
                                </item>
                            </item>
                        </item>
                    </item>
                </item>
            </argument>
        </arguments>
    </referenceBlock>

3) sales_order_view:

<referenceContainer name="order_totals">
        <block class="Dedicated\Processingfee\Block\Sales\Order\ProcessingFee" name="processingfee"/>
    </referenceContainer>

फिर अपने मॉड्यूल में इस तरह अपने कस्टम विशेषता मान प्राप्त करने के लिए कस्टम js जोड़ें: /view/frontend/web/js/view/checkout/cart/totals/processingfee.js पर:

define(
[
    'Dedicated_Processingfee/js/view/checkout/summary/processingfee'
],
function (Component) {
    'use strict';

    return Component.extend({

        /**
        * @override
        */
        isDisplayed: function () {
            return true;
        }
    });
}

);

कुल बिलिंग राशि के साथ मूल्य की गणना करने के लिए एक और js जोड़ें: /view/frontend/web/js/view/checkout/summary/processingfee.js

define(
[
    'Magento_Checkout/js/view/summary/abstract-total',
    'Magento_Checkout/js/model/quote',
    'Magento_Catalog/js/price-utils',
    'Magento_Checkout/js/model/totals'
],
function (Component, quote, priceUtils, totals) {
    "use strict";
    return Component.extend({
        defaults: {
            isFullTaxSummaryDisplayed: window.checkoutConfig.isFullTaxSummaryDisplayed || false,
            template: 'Dedicated_Processingfee/checkout/summary/processingfee'
        },
        totals: quote.getTotals(),
        isTaxDisplayedInGrandTotal: window.checkoutConfig.includeTaxInGrandTotal || false,
        isDisplayed: function() {
            return this.isFullMode();
        },
        getValue: function() {
            var price = 0;
            if (this.totals()) {
                price = totals.getSegment('processingfee').value;
            }
            return this.getFormattedPrice(price);
        },
        getBaseValue: function() {
            var price = 0;
            if (this.totals()) {
                price = this.totals().base_fee;
            }
            return priceUtils.formatPrice(price, quote.getBasePriceFormat());
        }
    });
}

);

आप मूल्य के साथ विशेषता मिल जाएगा कि सेट धन्यवाद :)

यहाँ छवि विवरण दर्ज करें


1
मुझे नहीं लगता कि @sudopratt छोटे विवरण की तरह उत्पाद नाम के नीचे एक उत्पाद विशेषता योग में एक पंक्ति जोड़ना चाहता है।
सुनील वर्मा

@ सुनील वर्मा आपको इसका हल मिल गया है। मुझे ठीक वैसा ही करने की जरूरत है लेकिन कोई संदर्भ नहीं मिल सकता है
रोहित गोयल

हां, इसका शो कस्टम विशेषता है लेकिन जब # भुगतान के लिए अगले चरण पर जाते हैं तो कस्टम विशेषता गायब हो जाती है। क्यों?
हाफिज उमेर

1

मेरे लिए $ परिणाम ['टोटलसदा'] ['आइटम'] खाली था। मैंने इसके बजाय निम्नलिखित कार्यान्वयन का उपयोग किया है:

public function afterGetConfig(
    \Magento\Checkout\Model\DefaultConfigProvider $subject,
    array $result

) {
    foreach ($result['quoteItemData'] as $index => $itemData) {
        $product = $this->productRepository->getById($itemData['product_id']);
        $result['quoteItemData'][$index]['flavor'] = $product->getFlavor();
    }
    return $result;
}

0

मुझे विन्यास के सरल उत्पाद नाम को प्रदर्शित करने की आवश्यकता है। इसलिए मैंने नीचे दिए गए कोड का उपयोग किया। लेकिन जब मैं चेकआउट ऑर्डर सारांश में समान विन्यास विकल्प चुनता हूं तो वही सरल नाम प्रदर्शित होता है। तो मैं सही सरल उत्पाद नामों को कैसे प्रदर्शित करूं?

public function afterGetConfig(\Magento\Checkout\Model\DefaultConfigProvider $subject, array $result)
{

    $items = $result['totalsData']['items'];

    $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
    for($i=0;$i<count($items);$i++){

        $quoteId = $items[$i]['item_id'];
        $quote = $objectManager->create('\Magento\Quote\Model\Quote\Item')->load($quoteId);
        $productId = $quote->getProductId();
        $product = $objectManager->create('\Magento\Catalog\Model\Product')->load($productId);
        $productTypeInstance = $product->getTypeInstance();
        $usedProducts = $productTypeInstance->getUsedProducts($product);

        foreach ($usedProducts  as $child) {
            $childName = $child->getName(); //Child Product Name
        }           

        $items[$i]['childname'] = $childName;
    }
    $result['totalsData']['items'] = $items;
    return $result;
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.