Magento: получите видимость продукта - PullRequest
6 голосов
/ 06 октября 2011

Как я могу получить видимость продуктов в загруженном продукте?

<?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 ]

10 голосов
/ 29 декабря 2011

Это код, который я использовал, и он работал на 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(), чтобы убедиться, что он возвращает действительный идентификатор продукта.Из вашего поста я не могу сказать, что это за объект $_item, но, похоже, я помню, что есть разница между Предметами и Продуктами.Может быть, попробуйте один из них:

$_item->getProductId();
$_item->getProduct()->getId();
4 голосов
/ 30 апреля 2012

если вы хотите, чтобы атрибут видимости в коллекции продуктов, вы должны сделать соединение

глядя на код размола продукта 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();
    }
3 голосов
/ 18 января 2012

Вы случайно работали с продуктом, взятым из коллекции? Типичная ошибка с Magento в том, что вы должны специально добавить поля для выбора перед загрузкой коллекции, в противном случае атрибут вернет ноль без ошибок.

1 голос
/ 02 октября 2012

Попробуйте это

 $product->isVisibleInCatalog() && $product->isVisibleInSiteVisibility()
0 голосов
/ 06 октября 2011

Вы должны использовать Mage_Catalog_Model_Product::getStatus метод (также есть полезный метод Mage_Catalog_Model_Product::isVisibleInCatalog).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...