আমি আমার মিনিটকার্টটি ম্যাজেন্টো ২ তে কাস্টমাইজ করতে চাই I আমাকে 3 টি বৈশিষ্ট্য যুক্ত করতে হবে


12

আমি আমার মিনিকার্টটি ম্যাজেন্টো ২ তে কাস্টমাইজ করতে চাই I আমাকে 3 টি বৈশিষ্ট্য যুক্ত করতে হবে: এসকিউ, উত্পাদনকারী এবং উত্পাদনকারী অংশ নম্বর। এগুলি বিদ্যমান বৈশিষ্ট্যগুলি। আমি দেখি কোথায় আউটপুট মান যুক্ত করতে হবে তবে সেগুলি কোথা থেকে কল করতে হবে না।

উত্তর:


26

এটি করার জন্য আপনি একটি মডিউল তৈরি করতে পারেন। নকআউট জেএস টেম্পলেট দ্বারা পঠিত ডেটা অ্যারেগুলিতে বৈশিষ্ট্যগুলি যুক্ত করতে এটি একটি প্লাগইন ব্যবহার করবে। তারপরে এই মানগুলি প্রদর্শন করতে আমাদের টেমপ্লেটটি ওভাররাইড করা দরকার।

এটি মডিউল ডিরেক্টরি:

|   registration.php
|   
+---etc
|   |   module.xml
|   |   catalog_attributes.xml
|   |   
|   \---frontend
|           di.xml
|           
+---Plugin
|       DefaultItem.php
|       
\---view
    +---frontend
    |   \---layout
    |           checkout_cart_sidebar_item_renderers.xml
    |           
    \---web
        \---template
            \---mini cart
                \---item
                        default.html

catalog_attributes.xml

<?xml version="1.0"?>

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Catalog:etc/catalog_attributes.xsd">
    <group name="quote_item">
        <attribute name="manufacturer"/>
        <attribute name="part_number"/>
    </group>
</config>

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\CustomerData\DefaultItem">
        <plugin name="AddAttPlug" type="Your\Module\Plugin\DefaultItem" disabled="false" sortOrder="10"/>
    </type>
</config>

DefaultItem.php

<?php

namespace Your\Module\Plugin;

use Magento\Quote\Model\Quote\Item;

class DefaultItem
{
    public function aroundGetItemData($subject, \Closure $proceed, Item $item)
    {
        $data = $proceed($item);
        $product = $item->getProduct();

        $atts = [
            "product_manufacturer" => $product->getAttributeText('manufacturer'),
            "product_part_number" => $product->getAttributeText('product_part_number')
        ];

        return array_merge($data, $atts);
    }
}

এসকিউ ইতিমধ্যে ডেটাতে বিদ্যমান তাই এটি যুক্ত করার দরকার নেই।

checkout_cart_sidebar_item_renderers.xml

<?xml version="1.0"?>

<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceBlock name="minicart">
            <arguments>
                <argument name="jsLayout" xsi:type="array">
                    <item name="components" xsi:type="array">
                        <item name="minicart_content" xsi:type="array">
                            <item name="children" xsi:type="array">
                                <item name="item.renderer" xsi:type="array">
                                    <item name="config" xsi:type="array">
                                        <item name="template" xsi:type="string">Your_Module/minicart/item/default</item>
                                    </item>
                                </item>
                            </item>
                        </item>
                    </item>
                </argument>
            </arguments>
        </referenceBlock>
    </body>
</page>

ডিফল্ট এইচটিএমএল হ'ল Magento/Checkout/view/frontend/web/template/minicart/item/default.htmlline 66 লাইনে করা পরিবর্তনগুলি copy

<li class="item product product-item" data-role="product-item">
    <div class="product">
        <!-- ko if: product_has_url -->
        <a data-bind="attr: {href: product_url, title: product_name}" tabindex="-1" class="product-item-photo">
            <!-- ko foreach: $parent.getRegion('itemImage') -->
                <!-- ko template: {name: getTemplate(), data: item.product_image} --><!-- /ko -->
            <!-- /ko -->
        </a>
        <!-- /ko -->
        <!-- ko ifnot: product_has_url -->
        <span class="product-item-photo">
            <!-- ko foreach: $parent.getRegion('itemImage') -->
                <!-- ko template: {name: getTemplate(), data: item.product_image} --><!-- /ko -->
            <!-- /ko -->
        </span>
        <!-- /ko -->

        <div class="product-item-details">
            <strong class="product-item-name">
                <!-- ko if: product_has_url -->
                <a data-bind="attr: {href: product_url}, text: 
                  product_name"></a>
                <!-- /ko -->
                <!-- ko ifnot: product_has_url -->
                    <!-- ko text: product_name --><!-- /ko -->
                <!-- /ko -->
            </strong>

            <!-- ko if: options.length -->
            <div class="product options" data-mage-init='{"collapsible":{"openedState": "active", "saveState": false}}'>
                <span data-role="title" class="toggle"><!-- ko i18n: 'See Details' --><!-- /ko --></span>

                <div data-role="content" class="content">
                    <strong class="subtitle"><!-- ko i18n: 'Options Details' --><!-- /ko --></strong>
                    <dl class="product options list">
                        <!-- ko foreach: { data: options, as: 'option' } -->
                        <dt class="label"><!-- ko text: option.label --><!-- /ko --></dt>
                        <dd class="values">
                            <!-- ko if: Array.isArray(option.value) -->
                                <span data-bind="html: option.value.join('<br>')"></span>
                            <!-- /ko -->
                            <!-- ko ifnot: Array.isArray(option.value) -->
                                <span data-bind="html: option.value"></span>
                            <!-- /ko -->
                        </dd>
                        <!-- /ko -->
                    </dl>
                </div>
            </div>
            <!-- /ko -->

            <div class="product-item-pricing">
                <!-- ko if: canApplyMsrp -->

                <div class="details-map">
                    <span class="label" data-bind="i18n: 'Price'"></span>
                    <span class="value" data-bind="i18n: 'See price before order confirmation.'"></span>
                </div>
                <!-- /ko -->
                <!-- ko ifnot: canApplyMsrp -->
                <!-- ko foreach: $parent.getRegion('priceSidebar') -->
                    <!-- ko template: {name: getTemplate(), data: item.product_price, as: 'price'} --><!-- /ko -->
                <!-- /ko -->
                <!-- /ko -->

                <div data-bind="html: 'SKU#: ' + item.product_sku"></div>
                <div data-bind="html: 'Manufacturer: ' + item.product_manufacturer"></div>
                <div data-bind="html: 'Part #: ' + item.product_part_number"></div>

                <div class="details-qty qty">
                    <label class="label" data-bind="i18n: 'Qty', attr: {
                           for: 'cart-item-'+item_id+'-qty'}"></label>
                    <input data-bind="attr: {
                           id: 'cart-item-'+item_id+'-qty',
                           'data-cart-item': item_id,
                           'data-item-qty': qty,
                           'data-cart-item-id': product_sku
                           }, value: qty"
                           type="number"
                           size="4"
                           class="item-qty cart-item-qty"
                           maxlength="12"/>
                    <button data-bind="attr: {
                           id: 'update-cart-item-'+item_id,
                           'data-cart-item': item_id,
                           title: $t('Update')
                           }"
                            class="update-cart-item"
                            style="display: none">
                        <span data-bind="i18n: 'Update'"></span>
                    </button>
                </div>
            </div>

            <div class="product actions">
                <!-- ko if: is_visible_in_site_visibility -->
                <div class="primary">
                    <a data-bind="attr: {href: configure_url, title: $t('Edit item')}" class="action edit">
                        <span data-bind="i18n: 'Edit'"></span>
                    </a>
                </div>
                <!-- /ko -->
                <div class="secondary">
                    <a href="#" data-bind="attr: {'data-cart-item': item_id, title: $t('Remove item')}"
                       class="action delete">
                        <span data-bind="i18n: 'Remove'"></span>
                    </a>
                </div>
            </div>
        </div>
    </div>
</li>

রেজিস্ট্রেশন.এফপি এবং মডিউল.এক্সএমএল এ কী আছে?
ম্যাথু ম্যাকলেন্নান

আমি এটি যুক্ত করেছি এবং এখন আমার আউটপুটটি "অন্তর্ভুক্ত" " তার মানে কি এটির কাজ কিন্তু আমার বৈশিষ্ট্যগুলি ভুল নাম দেওয়া হয়েছে?
ম্যাথু ম্যাকলেন্নান

রেজিস্ট্রেশন.এফপি এবং মডিউল.এক্সএমএল বয়লারপ্লেট ফাইল, এম 2 মডিউলগুলি কীভাবে সংজ্ঞায়িত হয় তার একটি হ্যান্ডেল পেতে আপনার এই টিউটোরিয়ালটি পরীক্ষা করা উচিত lan আপনি সম্ভবত ত্রুটি পেয়ে যাবার একটি স্ক্রিনশট পোস্ট করতে পারেন বা আরও সুনির্দিষ্ট হতে পারেন?
অ্যারন অ্যালেন

অ্যারোন অ্যালেন, এটি আমার পক্ষে কাজ, তবে আমি একই মিনিকার্টের বিষয়বস্তু html ওভাররাইড করতে এবং সেই ফাইলটিতে কিছু গতিশীল ডেটা যুক্ত করতে চাই। আমি কীভাবে এটি অর্জন করতে পারি তা দয়া করে ব্যাখ্যা করতে পারেন? আগাম ধন্যবাদ !
আশীষ জগানানি

2
এর পরিবর্তে গেট আইটেম ডেটা () এর চারপাশে অ্যাট্রিবিউটগুলি লোড করা থাকলে এগুলি / ক্যাটালগ_অ্যাট্রিবিউটস.এমএমএলে যুক্ত করা সম্ভব। বৈশিষ্ট্যগুলি $ আইটেম-> getPr Prodct () -> getAttributeText ('গুণবাচক_কোড') দিয়ে অ্যাক্সেস করা যেতে পারে; _ প্রোডাক্টরেপোর আর দরকার নেই।
Andreas Riedmiedller

0

আমি ম্যাজেন্টো ২.১ এ দুটি সহজ পদক্ষেপ নিয়ে আমার জিজ্ঞাসাটি স্ল্যাভ করেছি:

ফাইলে পরিবর্তন করুন: ->

1. ডিফল্ট আইটেম.এফপি লাইন যুক্ত করুন:

    $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
    $this->product = $objectManager->get('Magento\Catalog\Model\Product')-
    >load($this->item->getId());

   *Add element into return array result:*

   'short_description' => $this->product->getShortDescription(),

2.default.html লাইন যুক্ত করুন:

   <a data-bind="text: short_description"></a>

আমি আশা করি এটা তোমাকে সাহায্য করবে.

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