Magento:有没有办法将所有可配置产品设置为“单独不可见”

时间:2013-09-25 14:45:53

标签: sql database magento product

我想将可配置产品的所有子项设置为“单独不可见”,并且也为可配置产品的子项激活了网站下的复选框。

有办法做到这一点吗?

2 个答案:

答案 0 :(得分:2)

如果您可以直接访问mysql,可以执行以下操作:

来自可配置的孩子和父母的关系存储在catalog_product_super_link中 所以这个表中的所有产品都很简单,只是配置的孩子。

可见性存储为整数,并且表示“不可见”单独"是" 1"

现在我们可以使用此查询,但是如果您有本地或临时系统,请先试用它!

UPDATE catalog_product_entity_int AS pei
JOIN 
    catalog_product_super_link AS sl ON pei.entity_id = sl.product_id
JOIN
    eav_attribute AS e ON e.attribute_code = 'visibility'
        AND pei.attribute_id = e.attribute_id 
SET 
    pei.value = 1

对于网站复选框,请使用此插入选择语句,并将 {网站ID} 替换为您的ID

INSERT IGNORE INTO 
    catalog_product_website (product_id, website_id) 
SELECT product_id, {the website id} AS website_id FROM catalog_product_super_link;

答案 1 :(得分:2)

如果您没有MySQL访问权限,我相信这也会有效:

$sites=Mage::app()->getWebsites(true);
foreach($sites as $site){
    $site_list[]=$site->getWebsiteId();
}

$products=Mage::getResourceModel("catalog/product_collection")->addAttributeToFilter("type_id","configurable");

foreach ($products as $product){
    $child_products = $product->getTypeInstance()->getAssociatedProducts();

    $child_product_ids=array();

    foreach($child_products as $child_product){
        array_push($child_product_ids,$child_product->getId());
    }

    Mage::getSingleton('catalog/product_action')->updateAttributes(
        $child_product_ids,
        array(
            'visibility' => "1",
            'website_ids' => $site_list
        ),
        Mage::app()->getStore()->getId()
    );

}