1

我想使用 Magento 自定义模块(在控制器中)中的编码来更改产品可见性。我正在尝试下面的代码,但可见性没有改变。

请建议正确的方法。

$relContact = Mage::getModel('catalog/category/indexer/product')->getCollection();


Mage::register('isSecureArea', true);   

     foreach ($relContact as $product) {
        try {
        $product->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE);

        //$product->setVisiblity(VISIBILITY_NOT_VISIBLE);
        } catch(Exception $e) {
            echo "Product #".$product->getId()." Visiblity could not be changed: ".$e->getMessage();
        }
4

2 回答 2

3
<?php
require_once 'app/Mage.php';
umask(0);
$product_id = 'your_product_id';
Mage::app('default');
$product = Mage::getModel('catalog/product');
$product->load($product_id);
$product->setVisibility(4);
$product->save();       
?>

此处产品通过产品 ID 获取并以可见性更新产品 4. 如果您想添加新产品

<?php
require_once 'app/Mage.php';
umask(0);
$product_id = 'your_product_id';
Mage::app('default');
$product = Mage::getModel('catalog/product');
$product->setVisibility(4);
$product->save();   
?>
于 2013-07-26T06:06:18.750 回答
2

这只是一个小小的猜测,但如果你的代码没有触发错误,我想你忘记了保存产品。

try {
    $product->save();
} catch ( Exception $e ) {
    print_r($e);
}
于 2013-07-26T06:08:49.573 回答