如何在Magento中以编程方式更改产品可见性

时间:2013-07-26 05:59:51

标签: php magento zend-framework

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

请建议正确的方式。

$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();
        }

2 个答案:

答案 0 :(得分: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();   
?>

答案 1 :(得分:2)

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

try {
    $product->save();
} catch ( Exception $e ) {
    print_r($e);
}