Magento:获得产品可视性

时间:2011-10-06 11:48:38

标签: magento

如何在装载的产品上获得产品的可见性?

<?php
     $Product = Mage::getModel('catalog/product');
     $Product->load($_item->getId());
     var_dump($product_visibility = $Product->getData('visibility'));
?>

我也试过这个:

var_dump($product_visibility = $Product->getVisibility());

但总是只返回NULL

5 个答案:

答案 0 :(得分:10)

这是我使用的代码,它适用于Magento 1.5.0.1版本:

$pr2test = Mage::getModel('catalog/product');
$pr2test->load($product->getId());
echo 'Visibility: '.$pr2test->getVisibility();

可见性值是整数(1-4)。通过检查此处Mage_Catalog_Model_Product_Visibility类中定义的常量,您可以找出每个整数转换为的可见性设置:/app/code/core/Mage/Catalog/Model/Product/Visibility.php

如果您遇到问题,我建议您查看对$_item->getId()的来电,以确保其返回有效的产品ID。我无法从你的帖子中看出$_item是什么类型的对象,但我似乎记得项目和产品之间存在差异。也许尝试其中一个:

$_item->getProductId();
$_item->getProduct()->getId();

答案 1 :(得分:4)

如果您想要产品系列中的visibility属性,则应该进行连接

查看您可以找到的magento产品研磨代码

            $collection->joinAttribute('visibility', 'catalog_product/visibility', 'entity_id', null, 'inner', $store->getId());

所以在你的代码中你可以做到

   $prodColl = Mage::getModel('catalog/product')->getCollection()
            ->addAttributeToSelect('name')
            ->joinAttribute('visibility', 'catalog_product/visibility', 'entity_id', null, 'inner', 1);
 foreach ($prodColl as $prod)
    {
        $v       = $prod->getVisibility();
    }

答案 2 :(得分:3)

您是否偶然使用从产品系列中提取的产品? Magento的典型问题是你必须在加载集合之前专门添加要选择的字段,否则该属性将返回null而没有错误。

答案 3 :(得分:1)

试试这个

 $product->isVisibleInCatalog() && $product->isVisibleInSiteVisibility()

答案 4 :(得分:0)

您应该使用Mage_Catalog_Model_Product::getStatus方法(也有有用的方法Mage_Catalog_Model_Product::isVisibleInCatalog)。