Reputation: 102
I am over writing the product list in my extension but when I write the collection it add extra filter of category that i dont need.
Here is my code:
$collection = Mage::getResourceModel('catalog/product_collection');
$attributes = Mage::getSingleton('catalog/config')->getProductAttributes();
$collection->addAttributeToSelect($attributes)
->addMinimalPrice()
->addFinalPrice()
->addTaxPercents()
->addStoreFilter();
$collection->addIdFilter($result);
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($collection);
$collection->printlogquery(true);
You can see i did not add any category filter check but when i print the query i got this:
SELECT `e`.*, `price_index`.`price`, `price_index`.`tax_class_id`,
`price_index`.`final_price`, IF(`price_index`.`tier_price`,
LEAST(`price_index`.`min_price`, `price_index`.`tier_price`),
`price_index`.`min_price`) AS `minimal_price`,
`price_index`.`min_price`, `price_index`.`max_price`,
`price_index`.`tier_price`,
`cat_index`.`position` AS `cat_index_position`
FROM `mage_catalog_product_entity` AS `e`
INNER JOIN `mage_catalog_product_index_price` AS `price_index`
ON price_index.entity_id = e.entity_id
AND price_index.website_id = '1'
AND price_index.customer_group_id = 0
INNER JOIN `mage_catalog_category_product_index` AS `cat_index`
ON cat_index.product_id=e.entity_id
AND cat_index.store_id='1'
AND cat_index.visibility IN(2, 4)
AND cat_index.category_id='3'
WHERE (e.entity_id in ('724', '729', '733', '737', '741', '745', '749', '755',
'759', '766', '770', '775', '780', '785', '920', '921',
'923', '927', '957', '958', '959', '960', '961', '962',
'963', '964', '965', '966', '967', '1146', '1147', '1185',
'1186', '1187', '1188', '1189', '1190', '1191', '1192',
'1193', '1194', '1195', '1196', '1274', '1275', '1276',
'1277', '1278', '1279', '1280', '1281', '1282', '1283',
'1284', '1285', '1286', '1287', '1288', '1289', '1290',
'1291', '1292', '1293', '1294', '1295', '1310', '1311',
'1312', '1313', '1314', '1315'))
Here you see that in query it is printing the cat_index.category_id='3'
which i dont need. I need to know that how can i remove this category filter there?
Upvotes: 2
Views: 3866
Reputation: 328
The category filter is added when you use
Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($collection);
Instead, remove that line, and replace it with:
$collection->addAttributeToFilter('visibility', array('in' => array(Mage_Catalog_Model_Product_Visibility::VISIBILITY_IN_CATALOG, Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH) ));
Upvotes: 4