ম্যাজেন্টো 2-তে পণ্যের তালিকার শতাংশে কনফিগারযোগ্য পণ্যের ছাড় কীভাবে প্রদর্শন করবেন


10

পণ্য বিশদ পৃষ্ঠায় এটি ছাড়ের শতাংশ দেখায়। আমি যখন তালিকা পৃষ্ঠাটি খুলি তখন এটি কনফিগারযোগ্য পণ্যের জন্য শতাংশ দেখাচ্ছে না।

দয়া করে এর জন্য আমাকে সমাধান দিন।

আমি এটির জন্য নীচের কোডটি ব্যবহার করেছি, তবে এটি কনফিগারযোগ্য পণ্যটির জন্য কাজ করছে না।

<div class="discount-p">
    <?php

    if($_product->getTypeId() == "simple") {
        $simplePrice = $_product->getPrice();
        } else {
            $_children = $_product->getTypeInstance()->getUsedProducts($_product);
            foreach ($_children as $child){
            $simplePrice = $child->getPrice();
            break;
        }
    }

    $_finalPrice =$_product->getFinalPrice();
    $_price = $simplePrice;
    if($_finalPrice < $_price) {
    $_savingPercent = 100 - round(($_finalPrice / $_price)*100);
    echo '('. $_savingPercent . '%off)';

    }
    ?>
</div>

হাই, আপনি কি সমাধান পেয়েছেন?
বাইটস

@ অ্যাস্ক বাইটস এখনও নেই
মীরা

@ অ্যাসবাইটস এখনও কাজ না করে থাকলে আমাকে জানান। আমি আমার কোড পরীক্ষা করেছি এবং এটি ঠিক মতো কাজ করছে।
রোহান হাপানী

উত্তর:


2

আপনি এর মধ্যে কনফিগারযোগ্য পণ্য এবং কোডের জন্য আলাদা আলাদা প্রাইস ফাইল যুক্ত করতে পারেন।

catalog_product_prices.xml

কোড যুক্ত করুন

<?xml version="1.0"?>

<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/layout_generic.xsd">
    <referenceBlock name="render.product.prices">
        <arguments>
            <argument name="default" xsi:type="array">
                <item name="prices" xsi:type="array">
                    <item name="final_price" xsi:type="array">
                        <item name="render_class" xsi:type="string">Vendor\Module\Pricing\Render\FinalPriceBox</item>
                        <item name="render_template" xsi:type="string">Vendor_Module::product/price/final_price.phtml</item>
                    </item>
                </item>
            </argument>
            <argument name="configurable" xsi:type="array">
                <item name="prices" xsi:type="array">
                    <item name="final_price" xsi:type="array">
                        <item name="render_class" xsi:type="string">Magento\ConfigurableProduct\Pricing\Render\FinalPriceBox</item>
                        <item name="render_template" xsi:type="string">Vendor_Module::product/price/final_price_configurable.phtml</item>
                    </item>
                </item>
            </argument>
        </arguments>
    </referenceBlock>
</layout>

এটি কনফিগারযোগ্য পণ্য হিসাবে এটি দ্বারা getFinalPrice()এবং এটি পরীক্ষা করা সম্ভব নয় getSpecialPrice()

কনফিগারযোগ্য পণ্যের জন্য নীচে কোড যুক্ত করুন।

$priceModel = $block->getPriceType('regular_price');
$finalPriceModel = $block->getPriceType('final_price');

<?php if($finalPriceModel->getAmount() < $priceModel->getAmount()) : ?>
        <span class="old-price sly-old-price no-display config-old" style="text-decoration: line-through;">
            <?= $block->renderAmount($priceModel->getAmount(), [
                'price_id'          => $block->getPriceId('old-price-' . $idSuffix),
                'price_type'        => 'oldPrice',
                'include_container' => true,
                'skip_adjustments'  => true
            ]); ?>
        </span>
        <?php 

            $array = (array)$priceModel->getAmount();
            $prefix = chr(0).'*'.chr(0);
            $price = $array[$prefix.'amount'];

            $array = (array)$finalPriceModel->getAmount();
            $prefix = chr(0).'*'.chr(0);
            $finalPrice = $array[$prefix.'amount'];

            $percentage = 100 - round(($finalPrice / $price)*100);

            echo "<span class='percent-amt'>- ".$percentage."%</span>";
        ?>
    <?php endif; ?>

দ্রষ্টব্য: আপনি ফাইল পরিবর্তন করে সরাসরি এটি পেতে পারেন app\design\frontend\Vendor\theme\Magento_Catalog\templates\product\price\final_price.phtml, আপনাকে কেবল কনফিগারযোগ্য পণ্যের জন্য শর্ত রাখতে হবে

তালিকা পৃষ্ঠাতে প্রদর্শিত হবে এখানে চিত্র বর্ণনা লিখুন


1

আমি এই জাতীয় কিছু করব

public function getPercentage(\Magento\Catalog\Model\Product $product)
{
    $baseprice = 0;
    $finalprice = 0;
    $percentage = 0;

    if ($product->getTypeId() == 'configurable') {
        $baseprice = $product->getPriceInfo()
            ->getPrice('regular_price')
            ->getValue();

        $finalprice = $product->getPriceInfo()
            ->getPrice('final_price')
            ->getValue();
    } else {
        $baseprice = $product->getPrice();
        $finalprice = $product->getFinalPrice();
    }

    if ($finalprice < $baseprice) {
        $percentage = round(-100 * (1 - ($finalprice / $baseprice)));
    }

    return $percentage;
}

এবং এটি টেমপ্লেটে কল করুন

    if ($percentage = $helper->getPercentage($product)) {
        echo $percentage;
    }

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

1

আপনি কোনও ফাইল ওভাররাইড না করে এটি পরীক্ষা করে দেখতে পারেন। তার জন্য আপনাকে প্লাগিন ব্যবহার করতে হবে।

1) অ্যাপ্লিকেশন / কোড / ভেন্ডারনাম / মডিউলনেম / ইত্যাদি / সম্মুখভাগে di.xML ফাইল তৈরি করুন

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/ObjectManager/etc/config.xsd">
    <type name="Magento\Catalog\Block\Product\ListProduct">
        <plugin name="block-product-list" type="VendorName\ModuleName\Plugin\ProductList"/>
    </type>
</config>

2) অ্যাপ্লিকেশন / কোড / ভেন্ডরনাম / মডিউলনেম / প্লাগইনে প্রোডাক্টলিস্ট.পিএফ প্লাগইন ফাইল তৈরি করুন Create

<?php
namespace VendorName\ModuleName\Plugin;

class ProductList {

    public function afterGetProductDetailsHtml(
        \Magento\Catalog\Block\Product\ListProduct $subject,
        $result,
        \Magento\Catalog\Model\Product $product
    ) {
        if ($product->getTypeId() == "simple") {
            $simplePrice = $product->getPrice();
        } else {
            $_children = $product->getTypeInstance()->getUsedProducts($product);
            foreach ($_children as $child) {
                $simplePrice = $child->getPrice();
                break;
            }
        }

        $finalPrice = $product->getFinalPrice();
        $_price = $simplePrice;
        if ($finalPrice < $_price) {
            $discountPer = 100 - round(($finalPrice / $_price) * 100);
            return $result . 'Your save : ' . $discountPer . '%';
        } else {
            return $result;
        }
    }
}

আউটপুট (কনফিগারযোগ্য পণ্যটিতে):

এখানে চিত্র বর্ণনা লিখুন

আশা করি, এটি সম্ভবত আপনার জন্য সহায়ক।


($ Product-> getTypeId () == "কনফিগারযোগ্য") else if আপনার অন্য কোনও ব্যবহার করা উচিত কারণ পৃষ্ঠাটি যেখানে বান্ডিল বা গোষ্ঠী পণ্য বিচ্ছিন্ন হয়। বান্ডেল এবং গ্রুপ পণ্যগুলির জন্য getUsedProducts পদ্ধতি ব্যবহার করবেন না
হাফিজ উমার

1
কনফিগারযোগ্য পণ্যের জন্য এই প্রশ্ন। সুতরাং, আমি কেবল তার জন্য উত্তর যুক্ত করব।
রোহান হাপানী

0

নীচের কোড দিয়ে চেষ্টা করুন:

<?php
    $item = $block->getSaleableItem();
    $_savePercent = 100 - round(((float)$item->getFinalPrice() / (float)$item->getPrice()) * 100);
    echo '<b style="color:#008000">'.$_savePercent . '% off </b>';
    ?>

আমি আশা করি এটি আপনার জন্য কাজ করে

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