magento collections filter status

Magento: Filtrar productos por estado



collections filter (5)

Creo que puedes hacer esto configurando store como predeterminado

Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);

asegúrese de guardar el valor actual de la tienda y volver a configurarlo después de hacer lo anterior.

O usando un script de magento externo e invocar a mago por

require_once ''../app/Mage.php''; $app = Mage::app(); Mage::register(''isSecureArea'', true);

Tengo algunos problemas serios con Magento aquí. Como se esperaba, lo siguiente:

$products = Mage::getModel(''catalog/category'')->load($category_id) ->getProductCollection() ->addAttributeToSelect(''*'') ->addAttributeToFilter(''status'', array(''eq'' => 1));

Devolveré todos los productos habilitados para mi $ category_id. Sin embargo esto:

$products = Mage::getModel(''catalog/category'')->load($category_id) ->getProductCollection() ->addAttributeToSelect(''*'') ->addAttributeToFilter(''status'', array(''eq'' => 0));

No devuelve productos deshabilitados. Parece que no puedo encontrar una forma de devolver los productos deshabilitados, y no sé por qué.

He intentado esto:

Mage::getSingleton(''catalog/product_status'')->addVisibleFilterToCollection($products);

Lo que se suponía que había funcionado, pero al parecer puede haber quedado en desuso.

¿Alguien sabe cómo obtener todos los productos en una categoría, habilitado y deshabilitado?


Nada funciona si catalog_flat_product está catalog_flat_product en configuración de back- catalog_flat_product > catálogo.

prueba esto ... esto dará todos los productos habilitados y deshabilitados en última instancia

$collection = Mage::getResourceModel(''catalog/product_collection''); //this will give you all products foreach($collection as $col) { $var = Mage::getModel(''catalog/product'')->loadByAttribute(''sku'',$col->getSku()); echo"<pre>";print_r($var->getData());echo"</pre>"; }

es realmente simple y después de esto puedes filtrar productos fácilmente por estado


No he encontrado una respuesta como tal a mi pregunta anterior. Pero he ahorrado mucho tiempo al usar un método diferente.

Exporté un CSV de todos los productos en mi Magento, eliminé todas las columnas, excepto la ID de categoría y SKU (esto es todo lo que necesitaba), y luego lo filtré para devolver todos los skus.

Si ayuda a alguien aquí, es el código -

<?php $file = fopen(''allprods.csv'', ''r''); // You can use an array to store your search ids, makes things more flexible. // Supports any number of search ids. $id = array($_GET[''id'']); // Make the search ids safe to use in regex (escapes special characters) $id = array_map(''preg_quote'', $id); // The argument becomes ''/id/i'', which means ''id, case-insensitive'' $regex = ''/''.implode(''|'', $id).''/i''; $skus = array(); while (($line = fgetcsv($file)) !== FALSE) { list($ids, $sku) = $line; if(preg_match($regex, $ids)) { $skus[] = $sku; } } $count = count($skus); $i = 1; echo $category_id; foreach ($skus as $sku){ echo $sku; if($i != $count) { echo "`"; } $i++; }

Esta solución se creó mediante el uso de un tema anterior sobre el filtrado de CSV, here

Entonces, por ahora, puedo sobrevivir. sin embargo, ¡todavía se necesita una respuesta a esta pregunta!


No se preocupe, simplemente quedó atrapado por una definición constante muy inusual ^^. Sólo inténtalo:

$products = Mage::getModel(''catalog/category'')->load($category_id) ->getProductCollection() ->addAttributeToSelect(''*'') ->addAttributeToFilter( ''status'', array(''eq'' => Mage_Catalog_Model_Product_Status::STATUS_DISABLED) );

Por las razones que sean, Varien decidió definir esta constante STATUS_DISABLED con un valor de 2 , en lugar del valor más intuitivo (y comúnmente utilizado) de 0 .


$products = Mage::getModel(''catalog/category'')->load($category_id) ->getProductCollection() ->addAttributeToSelect(''*'') ->addAttributeToFilter(''status'', 1) ->addAttributeToFilter(''visibility'', 4) ->setOrder(''price'', ''ASC'');