Intereting Posts
jQuery Validator: проверка AlphaNumeric + пробел и тире Как добавить 5 минут к текущему дате времени на php <5.3 PHP textarea сохраняет дополнительные новые строки в MySQL DB Поиск рекурсивно пустых папок и их рекурсивное удаление Как пользователь автоматически выйдет из всех открытых вкладок, когда пользователь выйдет из одной из них PHP CLI не использует stderr для вывода ошибок Как получить правильную позицию списка в многобайтовой строке, используя preg_match не удалось обработать запрос ajax из небольшого модуля чата Измените версию PHP на сервере, используя либо .htaccess, либо php.ini Список функций php-файла Не удалось установить соединение Swift_TransportException с узлом smtp.gmail.com Не знаю, как решить (между Php и Javascript) Псевдослучайные числа в php Как отсортировать массив PHP с помощью элемента, вложенного внутри? PHP-сессия имеет значение null при вызове на другой странице в сафари

Проверка того, является ли продукт Magento дочерним по отношению к настраиваемому продукту

У меня есть следующий код, чтобы получить список продуктов

$collection = Mage::getModel('catalog/product')->getCollection(); $collection->addAttributeToSelect('name') ->addAttributeToFilter("category_ids", array('finset'=>$this->category_id)); foreach($collection as $product) { echo $product->getName(); } 

Мой вопрос заключается в том, как я могу НЕ отсылать продукты, которые являются «простыми», но относятся к родительскому «настраиваемому» продукту. (например, не показывать «Red Shirt Medium», поскольку она принадлежит к «Red Shirt»)

Я выяснил, что эта ассоциация живет в « catalog_product_super_link », но я только начал с Magento и, к сожалению, не знаю, как сделать фильтрацию 🙂

Привет, ребята,

Крис.

Solutions Collecting From Web of "Проверка того, является ли продукт Magento дочерним по отношению к настраиваемому продукту"

Я не знаю прямого способа добавить это условие в коллекцию, меня тоже будет интересовать такое решение. Но вы всегда можете проверить внутри цикла для каждого продукта:

 if (empty(Mage::getModel('catalog/product_type_configurable')->getParentIdsByChild($product->getId()))) { echo $product->getName(); } 

В классе продукта есть функция, называемая isConfigurable .

Это может помочь вам.

 $product->isConfigurable(); // if its the parent object it'll be true, if its the child it'll be false. 

Я сделал что-то подобное для нашего фида Google. Этот фрагмент кода – это то, что я использую для проверки наследования продуктов:

 $products = Mage::getModel('catalog/product')->getCollection(); $products->addAttributeToSelect('*'); $products->addAttributeToFilter('status', 1);//enabled $products->addAttributeToFilter('price', array('gt' => 0) );//price not 0 //$products->addAttributeToFilter('visibility', 4); //catalog, search - comment out to show all items (configurable products simple product breakdowns) Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($products); $prodIds=$products->getAllIds(); try { foreach($prodIds as $productId) { $product = Mage::getModel('catalog/product'); $product->load($productId); // SIMPLE PRODUCTS if($product->getTypeId() == 'simple' ) { $prodName = trim($product->getName()); $parentIds = Mage::getModel('catalog/product_type_grouped')->getParentIdsByChild($productId); if(!$parentIds) $parentIds = Mage::getModel('catalog/product_type_configurable')->getParentIdsByChild($productId); if($parentIds) { $parentProd = Mage::getModel('catalog/product')->load($parentIds[0]); /* * do something if this product has a parent or do some checks against $parentProd */ } // end parent check }//if SIMPLE } // foreach } catch(Exception $e) { die($e->getMessage()); } 

Самый быстрый способ может состоять в том, чтобы проверить, установлено ли видимость продукта «Не видимо индивидуально», поскольку для этого обычно задаются простые продукты, связанные с настраиваемыми продуктами. К сожалению, я не знаю точного синтаксиса, но, надеюсь, кто-то, кто хочет звонить, делает это!

Поскольку простые продукты, входящие в состав настраиваемых продуктов, обычно имеют видимость « Not Visible Individually , вероятно, достаточно добавить фильтр видимости в коллекцию, который проверяет видимость продуктов в каталоге:

 $collection->setVisibility(Mage::getModel('catalog/product_visibility')->getVisibleInCatalogIds()); 

В маловероятном случае, когда результирующие продукты являются частью настраиваемого продукта, вы можете использовать метод Mage_Catalog_Model_Product_Type_Configurable::getParentIdsByChild чтобы проверить, используется ли продукт как часть настраиваемого продукта.