Magento2 পণ্য তালিকা - পণ্য বিকল্প প্রদর্শন করুন


10

আমি এই মুহূর্তে একটি নতুন ম্যাজেন্টো 2 থিম নিয়ে কাজ করছি। এই থিমের জন্য আমি পণ্য তালিকার সমস্ত পণ্য বিকল্প (কাস্টম অপশন এবং বিকল্পগুলি কনফিগারযোগ্য পণ্য রূপ) প্রদর্শন করতে চাই। এইভাবে ব্যবহারকারী দ্রুত তার কার্টে পণ্য যুক্ত করতে পারে।

আমি product.infoব্লকটি যুক্ত করার চেষ্টা করেছি এবং সেই ব্লকের catalog_category_view.xmlজন্য পণ্যটি সেট করেছি। প্রতিটি পণ্যের জন্য বিকল্পগুলি দেখানো হয়, সমস্যাটি হ'ল বিকল্পটি কেবল প্রথম পণ্য থেকে আসে। সুতরাং অন্যান্য সমস্ত পণ্য এই বিকল্প আছে।

--- হালনাগাদ ---

আমি পণ্যের বিকল্পগুলি প্রদর্শন করতে পরিচালিত হয়েছি, তবে দামগুলি আপডেট হয় না। কেউ আমাকে সঠিক পথ নির্দেশ করতে পারবেন?

<form id='product_addtocart_form_<?php echo $product->getId(); ?>' class="c-product__details__add-to-cart" data-role="tocart-form" action="<?php echo $postParams[ 'action' ]; ?>" method="post">
    <input type="hidden" name="product" value="<?php echo $postParams[ 'data' ][ 'product' ]; ?>">
    <input type="hidden" name="<?php echo Action::PARAM_NAME_URL_ENCODED; ?>" value="<?php echo $postParams[ 'data' ][ Action::PARAM_NAME_URL_ENCODED ]; ?>">
    <?php echo $block->getBlockHtml('formkey') ?>
    <div class="product-options-wrapper" id="product-options-wrapper" data-hasrequired="* Verplichte velden">
        <?php if($product->getTypeId() === 'configurable') : ?>
            <?php foreach($product->getTypeInstance()->getConfigurableAttributes($product) as $attribute) : ?>
                <div class="field">
                    <label class="label" for="select_<?php echo $attribute->getAttributeId(); ?>"><span><?php echo $attribute->getLabel() ?></span></label>
                    <?php $values = $attribute->getOptions(); ?>
                    <div class="control">
                        <select id="select_<?php echo $attribute->getAttributeId() ?>" name="options[<?php echo $attribute->getAttributeId() ?>]" class="product-option product-custom-option-<?php echo $attribute->getAttributeId() ?> admin__control-select" data-selector="options[<?php echo $attribute->getAttributeId() ?>]">
                            <?php foreach($values as $value): ?>

                                <option value="<?php echo $value['value_index'] ?>" price="2"><?php echo  $value['label'] ?></option>
                            <?php endforeach; ?>
                        </select>
                    </div>
                </div>
            <?php endforeach; ?>
        <?php else : ?>
            <?php foreach($customOptions as $option): ?>
                <div class="field">
                    <label class="label" for="select_<?php echo $option->getId(); ?>"><span><?php echo $option->getTitle() ?></span></label>
                    <?php $values = $option->getValues(); ?>
                    <div class="control">
                        <select id="select_<?php echo $option->getId() ?>" data-id="<?php echo $product->getId() ?>" name="options[<?php echo $option->getId() ?>]" class="product-option product-custom-option-<?php echo $product->getId() ?> admin__control-select" data-selector="options[<?php echo $option->getId() ?>]">
                            <?php foreach($values as $value): ?>

                                <option value="<?php echo $value->getData('option_type_id') ?>" price="3"><?php echo $value->getTitle() ?></option>
                            <?php endforeach; ?>
                        </select>
                    </div>
                </div>
            <?php endforeach; ?>
        <?php endif; ?>
        <script>
            require([
                'jquery',
                'Magento_Catalog/js/price-box'
            ], function($){
                var priceBoxes = $('[data-product-id=<?php echo $product->getId(); ?>]');

                priceBoxes = priceBoxes.filter(function(index, elem){
                    return !$(elem).find('.price-from').length;
                });
                var priceBox = priceBoxes.priceBox({'priceConfig': <?php /* @escapeNotVerified */ echo $block->getJsonConfig($product, $customOptions) ?>});

                $('.product-option').on('change', function() {
                    priceBox.trigger('updatePrice');
                });
            });
        </script>
    </div>
    <button type="submit" title="<?php echo $block->escapeHtml(__('Add to Cart')); ?>" class="action tocart primary im">
        <span><?php echo __('Add to cart'); ?></span>
    </button>
</form>

আমি getJsonConfigনিজের লিস্টপ্রডাক্ট ক্লাসে ফাংশনটি বাস্তবায়ন করেছি।


magento.stackexchange.com/questions/100801/… কাস্টম বিকল্পগুলির জন্য কীভাবে, আপনাকে নিয়মিত বিকল্পগুলির দিকেও নিয়ে যেতে পারে। বিভাগ তালিকাতে কার্টে যুক্ত করুন: magento.stackexchange.com/a/125813/69
1400 এ B00MER

আপনার কোডে মান_পদ্ধতি এবং বিকল্প_ টাইপ_আইডি কী। value_index বিকল্প বিকল্পের সূচক এবং বিকল্প_প্রকার_আইডি বিকল্প আইডি
তিওয়ারি

আমি ত্রুটিটি অনির্ধারিত ভেরিয়েবল পাচ্ছি $ কাস্টম বিভাগগুলি আপনি আমাকে যাচাই বাছাই করতে পারেন আমি আপনার প্রতিক্রিয়ার জন্য অপেক্ষা করছি
তিওয়ারি

উত্তর:


1

আপনি উদাহরণস্বরূপ মডিউল Magento_Swatch হিসাবে নিতে পারেন।

ব্লক Magento\Swatches\Block\Product\Renderer\Listing\Configurableনামের সঙ্গে ব্লক যোগ করা হয় category.product.type.details.renderers

এখানে যেমন রয়েছে: https://github.com/magento/magento2/blob/develop/app/code/Magento/Swatches/view/frontend/layout/catalog_category_view.xml

টেমপ্লেটটি স্য্যাচগুলিতে ব্যবহৃত জেএস সূচনা করে: ম্যাগনটো_স্যাচেস :: পণ্য / তালিকা / রেন্ডারিয়র পিএফটিএমএল

https://github.com/magento/magento2/blob/develop/app/code/Magento/Swatches/view/frontend/templates/product/listing/renderer.phtml

এবং গুরুত্বপূর্ণ সমস্ত কিছুই জেএস সোয়াচে করা হয়। https://github.com/magento/magento2/blob/develop/app/code/Magento/Swatches/view/frontend/web/js/swatch-renderer.js ফাংশন ভালো লেগেছে: _RenderControls, _RenderFormInput, _EventListener, _UpdatePriceএবং অন্যান্য। জেএস দেখতে বড় দেখাচ্ছে। তবে এটিতে অ্যাজেএক্সের মাধ্যমে প্রাপ্ত সোয়াচগুলি চিত্রগুলি সরবরাহ করার চারপাশে প্রচুর কোড রয়েছে। আপনার সম্ভবত এটির দরকার নেই, এটি কার্যকর করা সহজ।

এখানে বিকল্পগুলি (সুপার অ্যাট্রিবিউটস এবং সম্পর্কিত পণ্য) এইচটিএমএল ট্যাগগুলি (স্যাচেস ডিভিএস) তৈরি এবং ম্যানিপুলেট করা হয়েছে। দাম এখানেও পরিচালিত হয়। আপনার ক্ষেত্রে আপনার ড্রপডাউন হবে।

উপরের সমস্তটি প্রয়োগ করতে আপনার নিজের মডিউলটি লিখতে হবে। তাত্ত্বিকভাবে আপনি সমস্ত ধরণের পণ্য (বান্ডেল, গোষ্ঠীযুক্ত, ..) থেকে যে কোনও বিকল্প যুক্ত করতে পারেন। ব্যয়টি পারফরম্যান্স, যেহেতু আপনার পছন্দসই বিভাগের পৃষ্ঠায় প্রতিটি পণ্যকে মডেলগুলিতে আরও ডেটা লোড করতে হবে।

বিকল্প হিসাবে, আপনি কনফিগারযোগ্য / সাধারণ সম্পর্কিত পণ্যগুলিতে অ-ভিজ্যুয়াল স্য্যাচগুলি (চিত্রগুলি ছাড়াই) সেট করার চেষ্টা করতে পারেন।


0

কনফিগারযোগ্য পণ্যগুলির জন্য: আপনাকে অবশ্যই " টেক্সট সোয়াচ " বৈশিষ্ট্যটি নির্ধারণ করতে হবে এবং স্যাচগুলি প্রদর্শন করার জন্য টেমপ্লেটটি পরিবর্তন করতে হবে (এটি ম্যাজেন্টো 2 এ ডিফল্ট), যদি ইচ্ছা হয় তবে এটি সর্বাধিক সরল, অথবা মডিউলের মাধ্যমে কার্যকারিতা স্য্যাচ প্রসারিত করুন, যা একটি নতুন যোগ করে বৈশিষ্ট্যের ধরণের বিকল্পটি এবং সেই বিকল্পটির জন্য একটি নতুন টেম্পলেট তৈরি করুন।


এটি সেরা বিকল্প বলে মনে হচ্ছে না, আমার আপডেট হওয়া প্রশ্নটি দেখুন, কেবলমাত্র দামগুলি এই মুহুর্তে কাজ করে না।
সিলভান

0

বাম মেনু তালিকায় -> অ্যাট্রিবিউট বিভাগে যান এবং পণ্যটি>> পণ্য অনুসন্ধান বিকল্পটি ক্লিক করুন যা আপনাকে প্রদর্শন করতে হবে এবং সেই বৈশিষ্ট্যের উপর ক্লিক করুন -> স্টোরফ্রন্টের বৈশিষ্ট্যগুলিতে যান -> এবং পরিবর্তন -> স্টোরফ্রন্টে ক্যাটালগ পৃষ্ঠাগুলিতে দৃশ্যমান এবং ব্যবহৃত পণ্য তালিকায় -> হ্যাঁ না।

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