3

こんにちは私はAdvanceインポートプロファイルを使用してプログラムでマグネトに製品をインポートしています。インポート全体が完了した後に再インデックスを実行したいと思います。Magentoを掘り下げてみましたが、インポート終了後に呼び出されている関数が見つかりません...

csv行ごとにajaxを呼び出しているファイルprocess.phtmlを見つけました/app/ design / adminhtml / default / default / template / system / convert / profile

そのため、ルートにファイルを作成し、ajaxを介して呼び出して各行をインポートしましたが、Mysqlでデッドロックが発生し、インポートでエラーSQLSTATE [40001]がスローされます。シリアル化の失敗:1213ロックしようとしたときにデッドロックが見つかりました。トランザクションを再開してみてください。

function reIndexData(){
                        var url = '<?php echo str_replace("index.php/","",Mage::getBaseUrl()); ?>';
                         new Ajax.Request(url+'reindex.php', {
                          method: "post",
                          parameters: 'data',
                          onSuccess: function(transport) {}
                        });
                    }
4

3 に答える 3

2

と呼ばれるオブザーバーがいます

catalog_product_import_finish_before

これにより、製品がインポートされるたびにDBのインデックスを再作成できるようになります。

MagentoObserversに関する情報は次のとおりです。

Magentoオブザーバーとは何ですか?

オブザーバーを使用すると、プログラムで特定のアクションが発生したときを確認(監視)できます(たとえば、アイテムがインポートされたときを確認できます)。

オブザーバーを使用すると、特定のアクション(インポートされている製品など)を確認したら、コードを挿入して実行できます。

オブザーバーを設定するにはどうすればよいですか?

この質問を参照してください:Magentoでオブザーバーを設定する正しい方法は何ですか?

于 2012-12-24T17:35:16.357 に答える
2

Magentoの任意の場所にカスタムイベントをディスパッチし、メソッドを呼び出してreIndexプロセスを実行することもできます。

詳細については、これらの最初2番目を参照してください

于 2012-12-24T17:46:47.423 に答える
0

このパスを使用してください。app/code/ core / Mage / Adminhtml / controllers / System / Convert

プロファイルのインポートが完了すると呼び出されるbatchFinishAction()という関数があるProfileController.phpファイルがあります。

ふぅ…わかった!親切に助けてくれてありがとう。

于 2012-12-26T12:38:37.657 に答える