如何在装载的产品上获得产品的可见性?
<?php
$Product = Mage::getModel('catalog/product');
$Product->load($_item->getId());
var_dump($product_visibility = $Product->getData('visibility'));
?>
我也试过这个:
var_dump($product_visibility = $Product->getVisibility());
但总是只返回NULL
答案 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
)。