9

我想覆盖 product.js 文件以在某些函数中添加一些额外的值。我已将文件从 js/mage/adminhtml/product.js 复制到我的文件夹,如 js/myfolder/myproduct.js。我该如何使用我尝试文件的功能,但它对我不起作用。当我更改对象名称时,它不会显示任何错误,但没有发生任何事情,(Products.Gallery = Class.create()原来是 Product.Gallery = Class.create();)。谁能告诉我如何在不与原始功能冲突的情况下使用 myproduct 的所有功能。

谢谢

4

1 回答 1

23

假设您function loadImage要从js/mage/adminhtml/product.js产品编辑页面中覆盖。

创建您的自定义 js: js/myfolder/myproduct.js:

Product.Gallery.addMethods({
    loadImage : function(file) {
        alert('hi there');
        var image = this.getImageByFile(file);
        this.getFileElement(file, 'cell-image img').src = image.url;
        this.getFileElement(file, 'cell-image img').show();
        this.getFileElement(file, 'cell-image .place-holder').hide();
    }
});

参考: http: //prototypejs.org/learn/class-inheritance.html

然后在您的布局 xml 中添加您的自定义 js:

<adminhtml_catalog_product_edit>
    <reference name="head">
        <action method="addJs"><script>myfolder/myproduct.js</script></action>
    </reference>
</adminhtml_catalog_product_edit>

使用此方法,function loadImage仅当您包含您的js/myfolder/myproduct.js.

PS:确保js/myfolder/myproduct.js包含在之后js/mage/adminhtml/product.js(尽管默认情况下因为js/mage/adminhtml/product.js包含在<default>标签中)

于 2012-11-14T16:30:50.723 回答