質問

私は現在、何百ものカタログを持つ大きなカタログを持っているクライアントと協力しています。カテゴリツリーを再構築する過程にあり、Magento管理地域がこれを行うには時間がかかりすぎていると判断しています。

何らかの種類のスクリプトを使用してカテゴリのカテゴリの注文と親IDをプログラムで修正することができるか、あるいはAPIを通しての場合は?

私は同様のタスクをするときに他のユーザーからのスタック質問を他のユーザーから見つけましたが、これは時に前に投稿され、より良い方法があるかどうか疑問に思った。

あなたの助けをありがとう: - )

役に立ちましたか?

解決

ツリー内の各カテゴリの場所は、データベーステーブルcatalog_category_entityで定義されているパスによって設定されます。パスは、カテゴリの位置を定義するカテゴリIDの/区切りリストです。これは常に1が実際にはカテゴリビューに表示されない最高レベルのカテゴリであることから始まります。その後、興味のあるカテゴリにつながるすべてのカテゴリのIDが表示されます。例えば、デモでは、アパレルの下のメンズシューズカテゴリのパスは1/3/18/5/16です。このカテゴリの新しい場所を設定するには、このパスを変更するだけで、1/3/18/5に設定すると、カテゴリの場所が靴ではなくアパレルになるように変更されます。

だからツリー内のこの特定のカテゴリの場所を変更するだけです。

$category = Mage::getModel('catalog/category')->load(16);
$category->setPath('1/3/18/5')->save();
.

とカテゴリーは靴のカテゴリーではなくアパレルの子に移動しました。ただし、重要なノート。カテゴリの場所を決定することに関連する他のロジックを変更する必要がある他の手順がいくつかあります(たとえば、カテゴリ上のgetLevel()への呼び出しはこれで間違っているでしょう。それで、あなたのパスと一緒に) parent_idpositionlevelchildren_countも更新する必要があります。これらすべては、path(つまり、setChildrenCount())と同じ手法で更新できます。

かなり単純なツリー構成以上のもので多くのカテゴリを更新する必要がある場合は、これらの値のそれぞれがすべてのカテゴリに対して何であるかを判断しています。私のアドバイスは、すべての情報が正しいことを終了することを確認するための管理方法に固執することであり、このメソッドをすべて同じ方法でまず試してみてください。その後、安全な環境で試してみて注意を続けます。

他のヒント

ジョナサンが本当にうまく働いてきたのは、カテゴリの注文を非常に早く更新することを可能にしました。また、インデックス保存モードを「更新時」から「手動UPDATE」に切り替えることも、管理領域をスピードアップし、待っていなくても変更を保存することができました。私がこれを発見した時までに、私はすでにそれらを更新するために上記の方法を使用したスクリプトを書いていました。これが役立つことを願っています: - )

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top