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 に答える