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