2012-11-14 10 views
9

js/mage/adminhtml/product.jsからjsのようなフォルダにファイルをコピーして、いくつかの機能で余分な値を追加するためにproduct.jsファイルをオーバーライドしたい/myfolder/myproduct.js.how私は試してみると私のために働いていないファイルの機能を使用することができます。私はエラーが表示されますが何も起こらないよりもオブジェクト名を変更するとき(Products.Gallery = Class.create()元はProduct.Gallery = Classです。 create();)。 元の機能の矛盾なしに、あらゆる製品の機能を使用する方法を教えてもらえますか?マゼンタでproduct.jsファイルをオーバーライドする方法

おかげ

答えて

20

はあなたが製品の編集ページにjs/mage/adminhtml/product.jsからfunction loadImageを上書きするつもりだとしましょう。

カスタム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: あなたの答えに感謝ivantedjaこんにちは

+0

(それは<default>タグに含まjs/mage/adminhtml/product.jsので、デフォルトではそのようなものですが)js/myfolder/myproduct.jsjs/mage/adminhtml/product.jsの後に含まれていることを確認します。私はあなたの指示と上記の関数の作業に従っていましたが、私は updateImagesのような他の関数をオーバーライドしようとしました:function(file){} これは私にthis.getFileElement(ファイル、 "セルラベル入力")が表示されますundefined.in上記のコードでは、私は名前のリンクとtarget_windowの2つの余分なフィールドを追加し、このコードはコアファイルで動作しますが、私のカスタムjsでは動作しません?? –

+0

こんにちは私は単に名前を変更してjsファイルを直接私のphtmlに それが動作します。 –

+1

どのページで書き直しますか?どの機能? updateImageまたはupdateImages? – ivantedja

関連する問題