Magento:获得产品可视性

iam*_*esy 6 magento

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

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

我也试过这个:

var_dump($product_visibility = $Product->getVisibility());
Run Code Online (Sandbox Code Playgroud)

但总是只返回NULL

los*_*ime 10

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

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

可见性值是整数(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();
Run Code Online (Sandbox Code Playgroud)


Won*_*and 5

如果要在产品集合中显示可见性属性,则应进行联接

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

            $collection->joinAttribute('visibility', 'catalog_product/visibility', 'entity_id', null, 'inner', $store->getId());
Run Code Online (Sandbox Code Playgroud)

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

   $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();
    }
Run Code Online (Sandbox Code Playgroud)


Rom*_*tko 0

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