চেকআউট সংক্ষিপ্তসার Magento 2 এ কাস্টম পণ্য বৈশিষ্ট্য যুক্ত করুন


14

আমি ম্যাজেন্টো ২-তে চেকআউটে সংক্ষিপ্ত বিভাগে আইটেমের তালিকায় একটি কাস্টম পণ্য বৈশিষ্ট্য যুক্ত করার চেষ্টা করছি The টেমপ্লেট ফাইলটি Magento_Checkout/web/template/summary/item/details.htmlপণ্যের নামের আগে কাস্টম বৈশিষ্ট্যের মান প্রদর্শন করতে চাইছে। এই মানটি কো টেমপ্লেটে কীভাবে যুক্ত হবে তার কোনও ধারণা? দেখে মনে হচ্ছে এই জন্য আরেকটি প্রশ্ন হল এখানে কিন্তু এর উত্তরে ছিল না।



1
@ অর্জুন এটি আলাদা। এই রেফারেন্স করা নিবন্ধটি সত্যিই কার্ট পৃষ্ঠাটি চেকআউট নয় shows কার্টটি একটি সাধারণ পিএইচটিএমএল টেম্পলেট। চেকআউটটি একটি কো পৃষ্ঠা এবং এটি মিনি কার্টের চেয়ে অন্য কোথাও থেকে উত্স পাচ্ছে। মিনি কার্ট, কার্ট এবং চেকআউটগুলিতে প্রদর্শিত সমস্ত কার্ট আইটেমগুলি কেন বিভিন্ন উপায়ে নির্মিত তা নিশ্চিত নয় Not তবে আসল চেকআউট সংক্ষিপ্তসারটি যেখানে আমাকে কাস্টম বৈশিষ্ট্য যুক্ত করতে হয় তা দেখতে হবে।
সুডোপ্র্যাট

@ সুডোপ্র্যাট, আপনি কি সম্পর্কে ধারণা পেয়েছেন, কীভাবে ম্যাজেন্টো 2-তে চেকআউটে সংক্ষিপ্ত বিভাগে আইটেমের তালিকাতে একটি কাস্টম পণ্য বৈশিষ্ট্য যুক্ত করতে হয়?
সরফরাজ সিপাই

উত্তর:


16

তার জন্য আপনাকে একটি প্লাগইন তৈরি করতে হবে। আমি সারাংশ অর্ডার করতে পণ্য গন্ধ যোগ করতে চেয়েছিলেন। এইভাবে আমি একটি প্লাগইন তৈরি করেছি এবং যা চেয়েছিলাম তা অর্জন করেছি।

বিক্রেতা = সেজাল al

আপনার তৈরি করা ফাইলগুলি:

  1. নিবন্ধন.এফপি: app\code\Sejal\Flavor\registration.php
  2. di.xML: app\code\Sejal\Flavor\etc\di.xml
  3. মডিউল.এক্সএমএল: app\code\Sejal\Flavor\etc\module.xml
  4. কনফিগারপ্রভাইডার প্লাগইন.এফপি: 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

কোড: রেজিস্ট্রেশন.এফপি

<?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/…
শাফিল শা

@ সজল শাহ এখানে শর্ত থাকলে কীভাবে যুক্ত করবেন
sumeet bajaj

1
এটি শিপিং পদক্ষেপের জন্য দুর্দান্ত কাজ করে তবে বিলিং পদক্ষেপে। উত্পাদক-আইটেম-
গন্ধটি


3

ক্রম সংক্ষিপ্তসারে যদি আপনি আপনার কাস্টম বৈশিষ্ট্যটি যুক্ত করতে চান তবে আপনাকে ওভাররাইড করতে হবে: (লেআউটগুলি) 1) চেকআউট_কার্ট_ইন্ডেক্স:

<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) চেকআউট_ইন্ডেক্স_আইডেক্স:

<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) বিক্রয়_অর্ডার_ভিউ:

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

তারপরে আপনার মডিউলে আপনার পছন্দসই বৈশিষ্ট্যের মানটি পেতে কাস্টম জেএস যুক্ত করুন: এ / ভিউ / ফ্রন্টএন্ড / ওয়েবে / জেএস / ভিউ / চেকআউট /কার্ট / টোটালস / প্রসেসিংফি.জেএস:

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

    return Component.extend({

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

);

মোট বিলিংয়ের পরিমাণ সহ মান গণনা করতে অন্য জেএস যুক্ত করুন: / ভিউ /ফ্রন্টএন্ড / ওয়েবে / জেস / ভিউ / চেকআউট / স্যমারি / প্রসেসিংফি.জেএস

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
আমি মনে করি না যে @ সুডোপ্র্যাট সংক্ষিপ্ত বিবরণের মতো পণ্যের নামের নীচে একটি পণ্য বৈশিষ্ট্যের চেয়ে মোট বুননে একটি সারি যুক্ত করতে চায়।
সুনীল ভার্মা

@ সুনীল ভার্মা এর সমাধান পেয়েছেন। আমার ঠিক একই কাজ করা দরকার তবে কোনও রেফারেন্স পাওয়া যায় না
রোহিত গোয়েল

হ্যাঁ, এর শো কাস্টম অ্যাট্রিবিউট কিন্তু যখন # পেমেন্টের জন্য পরবর্তী পদক্ষেপে সরানো হয় তখন কাস্টম বৈশিষ্ট্য অদৃশ্য হয়ে যায়। কেন?
হাফিজ উমার

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;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.