বন্ধ করা যায় না এমন ম্যাজেন্টো 2 মডেল পপআপ কীভাবে তৈরি করবেন?


10

আমি এমন একটি মডেল পপআপ তৈরি করার চেষ্টা করছি যা বন্ধ করা যায় না। এটিতে একটি বোতাম রয়েছে যা এটি ক্লিক করে আপনাকে পরবর্তী পৃষ্ঠায় নিয়ে যায়, তবে আমি চাই না যে ব্যবহারকারীরা এটি বন্ধ করতে সক্ষম হন।

মডেল পপআপটি 3 উপায়ে বন্ধ করা যেতে পারে:

  1. [X]উপরের ডানদিকে কোণে ক্রস / বোতামটি ক্লিক করা
  2. চেপে পালাচ্ছে
  3. ওভারলেতে ক্লিক করুন

এখনও অবধি এটি আমার মডেল জেএস এবং আমি মনে করি যে clickableOverlay: falseআমি ইতিমধ্যে ৩ য় একটিকে মোকাবেলা করেছি:

require(
    [ 'jquery', 'Magento_Ui/js/modal/modal' ],
    function($, modal) {
        $("#popup").modal({
            autoOpen: true,
            responsive: true,
            clickableOverlay: false,
            modalClass: 'modal-custom',
            title: 'Popup',
            buttons: [{
                text: $.mage.__('Take me back to the homepage'),
                class: 'action close-popup wide',
                click: function () {
                    window.location.href = '/';
                }
            }]
        });
    }
);

হালনাগাদ:

প্রদত্ত সমাধানগুলির চেষ্টা করার সময় আমি মডেলটিকে আলাদাভাবে সেটআপ করার চেষ্টা করেছি:

require(
    [ 'jquery', 'Magento_Ui/js/modal/modal' ],
    function($, modal) {
        modal({
            //options
        }, $("#popup"));
    }
);


@ ক্রিস্টোফ্যাটফুমান, হাহাহা, ঠিক আছে, আমি মোডাল পাঠ্যে যুক্ত করব: "দয়া করে এফ 12 টিপুন, এই মডেলটি পরীক্ষা করুন এবং এটি বন্ধ করার জন্য এটি ডিওএম থেকে সরান"। আমি মনে করি আপনি সঠিক, বেশ আকর্ষণীয়, তবে আমি সেই ঝুঁকি গ্রহণ করব এবং এটিকে প্রতিরোধে কোনও পদক্ষেপ প্রয়োগ করব না।
ওচেম

উত্তর:


10

আমি modal.closeModal()মিক্সিনগুলির মাধ্যমে কাজ করার জন্য ফাংশনটির একটি ওভাররাইড পেতে পারি না এবং আমিও মনে করি যে এটি একটি মিক্সিনের মাধ্যমে করার ফলে এটি সমস্ত ওয়েবসাইটগুলিতে সমস্ত ওয়েবসাইটকে ওভাররাইড করে তোলে যা আমি চাই না। আমার কেবল এটির একটি মডেলের প্রয়োজন।

আমি কল করব যে কোনও ট্রিগার সরিয়ে দিয়ে শেষ করেছিলাম modal.closeModal()। এটি অর্জনের জন্য আপনি আরও কয়েকটি মডেল বিকল্প ব্যবহার করতে পারেন:

  1. আমি openedবিকল্পটি / ইভেন্টটি দিয়ে মডেলটি খোলার ঘনিষ্ঠ বোতামটি আড়াল করি যা মডেলটি খোলার পরে ঠিক ট্রিগার হবে will
  2. আমি keyEventHandlers.escapeKeyবিকল্পটি ওভাররাইড করছি

সুতরাং এটি আমার চূড়ান্ত কোড:

require(
    [ 'jquery', 'Magento_Ui/js/modal/modal' ],
    function($, modal) {
        modal({
            autoOpen: true,
            responsive: true,
            clickableOverlay: false,
            modalClass: 'modal-custom',
            title: 'Popup',
            buttons: [{
                text: $.mage.__('Take me back to the homepage'),
                class: 'action close-popup wide',
                click: function () {
                    window.location.href = '/';
                }
            }],
            opened: function($Event) {
                $('.modal-header button.action-close', $Event.srcElement).hide();
            },
            keyEventHandlers: {
                escapeKey: function () { return; }
            }
        }, $("#popup"));
    }
);

1
ভাল কাজ এটি অবশ্যই এটি করার সঠিক উপায়
রাফেল ডিজিটাল পিয়ানিজমে

7

আমি বিবেচনা করি যে ক্ষেত্রে মিক্সিনগুলি ব্যবহার করা প্রাসঙ্গিক হবে।

আপনি নিম্নলিখিত চেষ্টা করতে পারেন:

আপনার মডিউলে প্রথমে নিম্নলিখিতটি তৈরি করুন view/base/requirejs-config.js:

var config = {
    'config':{
        'mixins': {
            'Magento_Ui/js/modal/modal': {
                'Vendor_Module/hook':true
            }
        }
    }
}; 

তারপরে তৈরি করুন view/base/web/hook.js:

define([], function(){
    'use strict';    
    return function(targetModule){
        targetModule.closeModal = function(){
            return false;
        }
        return targetModule;
    };
});

এই মিশ্রণের সাহায্যে আপনি closeModalপদ্ধতির প্রয়োগটিকে আপনার নিজস্ব পদ্ধতির সাথে প্রতিস্থাপন করেন । সেক্ষেত্রে, মিথ্যা ফিরানো মডেল বন্ধ করা এড়াতে পারে।

পার্শ্ব দ্রষ্টব্য: এটি করার জন্য আমি আপনাকে ঘৃণা করি। অনাবৃত পপআপগুলি ওয়েব থেকে নিষিদ্ধ করা উচিত।


3
আমি ঠিক তা করেছি, কিন্তু এখনও এটি বন্ধ। যদি আমি এটি আমার টার্মিনালে চালাই তবে আমি দেখতে পাচ্ছি যে jQuery.mage.modal.closeModalfunction() { return false; }
মিক্সিনটি

1
@ 7ochem সম্ভবত return false;যথেষ্ট নয়। সত্যি বলতে আমি জেএসের সাথে স্বাচ্ছন্দ্যে খুব বেশি পারছি না। আমি মনে করি আপনার এই নিবন্ধটি পড়তে হবে এটি আপনাকে সমস্যাটি সঙ্কুচিত করতে বা এটি করার অন্য কোনও সম্ভাব্য উপায় খুঁজে পেতে সহায়তা করতে পারে: alanstorm.com/the-curious- کیس-of
ডিজিটাল পিয়ানোবাদে রাফেল

3
আমি অনুমান করি যে এটি closeModal()ফাংশন সাইটের প্রশস্ত জায়গায় প্রতিস্থাপন করে যা আমি চাই না। আমি কেবল
এটিই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.