ম্যাজেন্টো 2: বিনামূল্যে শিপিং উপলভ্য হলে অন্যান্য শিপিং পদ্ধতিগুলি লুকান


11

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

উত্তর:


6

আমারও একই সমস্যা ছিল।

"ফ্রি শিপিং" কনফিগারেশন সরান কারণ আপনার এটির প্রয়োজন নেই (আপনার কাছে ইতিমধ্যে "কার্টের মূল্য বিধি" রয়েছে)।

যখন আপনার গ্রাহক নিখরচায় শিপিংয়ের যোগ্যতা অর্জন করে তখন এটি "ফ্ল্যাট রেট" এর ভিত্তিতে ঘটে "ফ্রি শিপিং" না।


6

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

<?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\OfflineShipping\Model\Carrier\Flatrate">
        <plugin name="disable-flatrate" type="Vendor\ModuleName\Model\Carrier\Flatrate" sortOrder="1" />
    </type>
</config>

উপ মোট বৈধতা প্রক্রিয়া করতে একটি মডেল বর্গ লিখুন।

<?php
namespace Vendor\ModuleName\Model\Carrier;

class Flatrate
{

    const XML_PATH_FREE_SHIPPING_SUBTOTAL = "carriers/freeshipping/free_shipping_subtotal";

    /**
     * @var \Magento\Checkout\Model\Session
     */
    protected $_checkoutSession;

    /**
     * @var \Magento\Framework\App\Config\ScopeConfigInterface
     */
    protected $_scopeConfig;

    public function __construct(
        \Magento\Checkout\Model\Session $checkoutSession,
        \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
        \Magento\Store\Model\StoreManagerInterface $storeManager
    ) {
        $this->_storeManager = $storeManager;
        $this->_checkoutSession = $checkoutSession;
        $this->_scopeConfig = $scopeConfig;
    }

    public function afterCollectRates(\Magento\OfflineShipping\Model\Carrier\Flatrate $flatRate, $result)
    {
        $scopeId = $this->_storeManager->getStore()->getId();

        $storeScope = \Magento\Store\Model\ScopeInterface::SCOPE_STORES;

        // Get MOA value from system configuration.
        $freeShippingSubTotal = $this->_scopeConfig->getValue(self::XML_PATH_FREE_SHIPPING_SUBTOTAL, $storeScope, $scopeId);

        // Get cart subtotal from checkout session.
        $baseSubTotal = $this->_checkoutSession->getQuote()->getBaseSubtotal();

        // Validate subtoal should be empty or Zero.
        if(!empty($baseSubTotal) && !empty($freeShippingSubTotal)) {

            if($baseSubTotal >= $freeShippingSubTotal) {
                return false;
            }
        }

        return $result;
    }
}

1
হাই @ মানিপ্রকাশ যেখানে আমার di.xML তৈরি করতে হবে?
নাগারাজু কে

2
রম্বা নান্দ্রি এর কাজ ঠিক আছে।
নাগারাজু কে

1
পণ্য / কার্ট আইটেম বৈশিষ্ট্যের উপর ভিত্তি করে শিপিং পদ্ধতিগুলি কীভাবে আড়াল করবেন?
নাগারাজু কে

5

এক্সটেনশন ব্যবহার করুন ShippingTweaks


হাই @ ভিটল্লি কি এই মডিউলটি আমাকে আমার পণ্যের বৈশিষ্ট্যের উপর ভিত্তি করে শিপিংয়ের পদ্ধতিগুলি আড়াল করতে সহায়তা করবে?
নাগারাজু কে

1

@ নাগারাজু এর জবাবে এবং যে কারও কাছে সহায়তা করার আশাবাদী।

Di.xml আপনার যে কোনও মডিউলে তৈরি করা যেতে পারে, বা আপনি কীভাবে এবং কোথায় জানেন না:

অ্যাপ্লিকেশন / কোড / মাই_ভেন্ডার / মাইমডিউল / ইত্যাদি / ডি.এক্সএমএল -> এখানে আপনি @ মানিপ্রকাশের কোডটি রেখেছেন

তারপরে আপনার ক্লাসটি তৈরি করা উচিত:

অ্যাপ / কোড / মাই_ভেন্ডার / মাইমডুল / মডেল / ফ্লাট্রেট -> এবং @ মণিপ্রকাশের ক্লাস কোডটি পেস্ট করুন

Di.xml এ টাইপ ট্যাগের মধ্যে পথটি পরিবর্তন করতে হবে মনে রাখবেন

<plugin name="disable-flatrate" type="Vendor\ModuleName\Model\Carrier\Flatrate" sortOrder="1" />

আপনার মডেল ক্লাসটি যেখানে রয়েছে সেখানে অবশ্যই পথটি মিলবে । আমার উদাহরণ হতে হবে

<plugin name="disable-flatrate" type="My_Vendor\MyModule\Model\Flatrate" sortOrder="1" />

এবং এটাই! আশা করি এটা সাহায্য করবে! এবং @ মণিপ্রকাশকে ধন্যবাদ, এটি আমাকে সাহায্য করে! =)


0

চেকআউটে ফ্রি শিপিং লুকান

বিক্রেতা / Magento / Magento_Checkout / টেমপ্লেট / শিপিং-ঠিকানা / শিপিং-পদ্ধতি-item.html

<!-- ko if: method.carrier_code !== 'freeshipping' -->
<tr class="row"
click="element.selectShippingMethod">
<td class="col col-method">
    <input type="radio"
           class="radio"
           ifnot="method.error_message"
           ko-checked="element.isSelected"
           ko-value="method.carrier_code + '_' + method.method_code"
           attr="'aria-labelledby': 'label_method_' + method.method_code + '_' + method.carrier_code + ' ' + 'label_carrier_' + method.method_code + '_' + method.carrier_code,
                'checked': element.rates().length == 1 || element.isSelected" />
    <span class="label"></span>
</td>
<td class="col col-price">
    <each args="element.getRegion('price')" render="" />
</td>
<td class="col col-carrier"
    attr="'id': 'label_carrier_' + method.method_code + '_' + method.carrier_code"
    text="method.carrier_title" />


0

ইত্যাদি / di.xml

<type name="Magento\Quote\Model\ShippingMethodManagement">
    <plugin name="vendor_module_plugin_model_quote_shipping_method_management" type="Vendor\Module\Plugin\Model\ShippingMethodManagement"  disabled="false"/>
</type>

প্লাগইন / মডেল / ShippingMethodManagement.php

public function afterEstimateByAddress($shippingMethodManagement, $output)
{
    return $this->filterOutput($output);
}

public function afterEstimateByExtendedAddress($shippingMethodManagement, $output)
{
    return $this->filterOutput($output);
}

public function afterEstimateByAddressId($shippingMethodManagement, $output)
{
    return $this->filterOutput($output);
}

private function filterOutput($output)
{
    $free = [];
    foreach ($output as $shippingMethod) {
        if ($shippingMethod->getCarrierCode() == 'freeshipping' && $shippingMethod->getMethodCode() == 'freeshipping') {
            $free[] = $shippingMethod;
        }
    }

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