会社のサイトを Magento に移行しようとしていますが、製品画像に問題がありました。15,000 個の製品があり、その 80% は構成可能な親を持つ単純な製品です。カート振込で支払いましたが、新規作成商品で簡易商品に画像が表示されません。シンプルな製品ごとに設定する必要がありますが、構成可能アイテムごとにサイズに関連するシンプルな製品が 5 ~ 7 個あるため、時間がかかりすぎます。
catalog_product_save_after イベントを使用して、構成可能なものに関連付けられたイメージをその子のそれぞれに書き込むことを検討しています。
私のコードは機能していません (私は Magento を初めて使用します)。誰かが提供できる助けをいただければ幸いです。
Cden_Share.xml
<?xml version="1.0"?>
<config>
<modules>
<Cden_Share>
<active>true</active>
<codePool>local</codePool>
</Cden_Share>
</modules>
</config>
config.xml
<config>
<modules>
<Cden_Share>
<version>0.0.1</version>
</Cden_Share>
</modules>
<adminhtml>
<models>
<cden_share>
<class>Cden_Share_Model</class>
</cden_share>
</models>
<events>
<catalog_product_save_after>
<observers>
<cden_share>
<class>cden_share/observer</class>
<method>shareMainImages</method>
<type>singleton</type>
</cden_share>
</observers>
</catalog_product_save_after>
</events>
</adminhtml>
</config>
最後に、私の Observer.php です。このコードは、stackoverflow の回答から、製品バンドルに関する同様の質問 ( Magento - 製品バンドルに対して同じ画像を表示するには? ) から取得しました。
<?php
class Cden_Share_Model_Observer
{
public function shareMainImages(Varien_Event_Observer $observer)
{
$product = $observer->getEvent()->getProduct();
if ($product->getTypeId() == "configurable")
{
$main_image = $product->getImage();
if($main_image != "no_selection")
{
$productTypeIns = $product->getTypeInstance(true);
$childIds = $productTypeIns->getChildrenIds($product->getId());
$importDir = Mage::getBaseDir('media') . DS . 'catalog/product';
foreach ($childIds as $childId)
{
foreach($childId as $_childId)
{
$childProduct = Mage::getModel('catalog/product')->load($_childId);
if ($childProduct->getImage()=="no_selection")
{
$childProduct->addImageToMediaGallery($importDir.$main_image,array ('image','small_image','thumbnail'),false,false);
$childProduct->save();
}
}
}
}
}
}
}
?>
あなたが与えることができるどんな助けにも感謝します.