Magento2 - Cách mở rộng tiện ích jQuery (configureable.js)


15

Tôi đang tạo tiện ích mở rộng thay thế nhãn tùy chọn có thể định cấu hình mặc định 'Chọn tùy chọn ...' bằng tên thuộc tính, ví dụ: 'Chọn màu ...'.

Làm cách nào tôi có thể mở rộng (không ghi đè!) Tiện ích jQuery configureable.js và chỉ sửa đổi dòng này?

Tôi biết từ tài liệu rằng tôi có thể ghi đè một tiện ích jQuery, vì vậy tôi đã làm:

define([
    'jquery',
    'jquery/ui',
    'configurable' // usually widget can be found in /lib/web/mage dir
], function($){

    $.widget('silvan.configurable', $.mage.configurable, {

    });

    return $.silvan.configurable;
});

Làm thế nào tôi có thể khởi tạo tập tin này? Tôi có nên tải nó qua notifyjs-config không? Các chức năng bản đồ chỉ dành cho ghi đè phải không?

Có thể chỉ sửa đổi dòng này? Nó được gọi từ chức năng này:

_fillSelect: function (element) {}

Câu trả lời:


25

Trước tiên, bạn cần đảm bảo rằng mô-đun của bạn có Magento_ConfigurableProducttrình tự theo module.xml:

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="Vendor_ModuleName" setup_version="1.0.0">
        <sequence>
            <module name="Magento_ConfigurableProduct"/>
        </sequence>
    </module>
</config>

Đảm bảo tạo lại danh sách thành phần config.php, nếu không, chuỗi sẽ bị bỏ qua ( http://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-load-order.html )

Sau đó thêm requirejs-config.jstệp trong view/frontendthư mục với mã:

var config = {
    map: {
        '*': {
            configurable: 'Vendor_ModuleName/js/configurable'
        }
    }
};

Cuối cùng thêm configurable.jstập tin trong view/frontend/web/jsthư mục với:

define([
    'jquery',
    'jquery/ui',
    'Magento_ConfigurableProduct/js/configurable'
], function($){

    $.widget('silvan.configurable', $.mage.configurable, {
        //code you want to override
    });

    return $.silvan.configurable;
});

Bạn không thể sửa đổi một dòng đơn, nhưng bạn có thể sửa đổi một chức năng duy nhất bên trong.


Làm thế nào để sửa đổi một chức năng làm việc? Làm thế nào để gọi cho cha mẹ?
Alex

Bạn có thể gọi các chức năng khác với chức năng bạn sửa đổi giống như nó là một phần của tiện ích con. Bạn silvan.configurabletự động thừa hưởng tất cả từ cha mẹ.
Bartłomiej Szubert

2
Điều này làm việc tuyệt vời, cảm ơn bạn @Ideo! Tiền thưởng sẽ được đưa ra trong 7 giờ (giới hạn của stackexchange). @Alex bạn có thể gọi cha mẹ bằng cách sử dụng this._super (); chức năng. Xem: learn.jquery.com/jquery-ui/widget-factory/extending-widgets/...
Silvan

có gì khác để làm không? vì tệp tùy chỉnh của tôi sẽ không được tải ... đã làm chính xác như được mô tả ở trên :-(
roman204

1
Điều này làm việc tuyệt vời! @ roman204 Tôi gặp vấn đề tương tự: đảm bảo bạn có nút "trình tự" trong tệp mô-đun. Sau đó, điều quan trọng là tải lại thứ tự mô-đun. Cách duy nhất để làm điều đó vào lúc này là vô hiệu hóa và kích hoạt lại mô-đun nơi bạn đặt "trình tự" trong tệp mô-đun. (Thông tin thêm: xem phần màu xanh trên trang này: devdocs.magento.com/guides/v2.2/extension-dev-guide/build/iêu )
Stijn Duynslaeger - Eync
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.