如何在magento中覆盖product.js文件

时间:2012-11-14 12:43:06

标签: magento

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

由于

1 个答案:

答案 0 :(得分:21)

假设您要在产品编辑页面中覆盖function loadImage的{​​{1}}。

创建自定义js: js/mage/adminhtml/product.js

js/myfolder/myproduct.js

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

然后在你的布局xml中添加你的自定义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();
    }
});

使用此方法时,只有在您添加<adminhtml_catalog_product_edit> <reference name="head"> <action method="addJs"><script>myfolder/myproduct.js</script></action> </reference> </adminhtml_catalog_product_edit> 时才会覆盖function loadImage

PS: 确保在js/myfolder/myproduct.js之后包含js/myfolder/myproduct.js(尽管默认情况下是这样的,因为js/mage/adminhtml/product.js标记中包含js/mage/adminhtml/product.js