1

指定された store_id と option_id が同じ場合、カスタム オプションを削除したい。

現在、マグネトにはこのコードがあります

foreach ($product->getOptions() as $option) 
{       

    $option->getValueInstance()->deleteValue($option->getId());
    $option->deletePrices($option->getId());
    $option->deleteTitles($option->getId());
    $option->delete();
}

そして、私は削除のためにこのコードを試しました

foreach ($product->getOptions() as $option) 
{       
    $allStores = Mage::app()->getStores();
    foreach ($allStores as $_eachStoreId => $val)
    {
        if($_storeCode = Mage::app()->getStore($_eachStoreId)->getCode() == $importData['store'])
        {
                $option->getValueInstance()->deleteValue($option->getId());
                $option->deletePrices($option->getId());
                $option->deleteTitles($option->getId());
                    $option->delete();
            }
        }
}

ただし、同じ場合option_idはすべてのカスタムオプションが削除され、チェックされませんstore_id

特定のstore_idとoption_idのときにカスタムオプションを削除するにはどうすればよいですか?

4

1 に答える 1

1

コードを少し変更しました。これで、より速く適切に動作するはずです。だからそれをチェックしてください:

$allStores = Mage::app()->getStores(false,true);
foreach ($product->getOptions() as $option) 
{           
    foreach ($allStores as $_eachStoreCode => $val)
    {
        if(strcasecmp($_eachStoreCode,$importData['store']) == 0)
        {
                $option->getValueInstance()->deleteValue($option->getId());
                $option->deletePrices($option->getId());
                $option->deleteTitles($option->getId());
                    $option->delete();
            }
        }
}

このリンクも役立つようです。

于 2012-11-27T08:46:28.263 に答える