親製品が無効としてマークされている場合でも、単純な製品から親の構成可能な製品を取得する必要があります。また、構成可能な製品のステータス(有効または無効)を取得する必要があります。
現在、次のような親製品を入手しています。
$parentIds = Mage::getResourceSingleton('catalog/product_type_configurable')->getParentIdsByChild($product->getId());
if (isset($parentIds[0])) {
$product = Mage::getModel('catalog/product')->load($parentIds[0]);
}
$ parentIds配列が空である構成可能な製品が無効になっていない限り、これは完全に機能します。構成可能な製品が無効になっている場合でも取得し、構成可能な製品が有効か無効かを判断する必要があります。
何か助けていただければ幸いです!
少し掘り下げてみましたが、問題を再現できないようです。
構成可能が無効になっている単純なものでgetParentIdsByChild()を呼び出すと、親製品IDを取得します。
$parentIds = Mage::getResourceSingleton('catalog/product_type_configurable')
->getParentIdsByChild(14412);
var_dump($parentIds);
私に与える:
array(1) {
[0]=>
string(5) "14446"
}
14446のステータスは無効です。在庫ありと在庫切れの状態で試してみました。
リソースファイルの実際の関数を見る
Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Type_Configurable::getParentIdsByChild()
テーブルにあることがわかりますcatalog_product_super_link
ステータスのフィールドがないため、製品リンクが存在する場合は常に親IDを返す必要があります。