可視性については、(Mage_Catalog_Model_Layer::prepareProductCollection() から):
Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($collection);
CATALOG および BOTH フィルターをコレクションに設定します。
ステータスの場合、少し奇妙に見えますが、それでも意味があります。app/code/core/Mage/Catalog/Model/Resource/Product/Collection.php の _initSelect では、以下が行われます。
$this->getSelect()
->from(array(self::MAIN_TABLE_ALIAS => $this->getEntity()->getFlatTableName()), null)
->columns(array('status' => new Zend_Db_Expr(Mage_Catalog_Model_Product_Status::STATUS_ENABLED)));
このコードは、
Mage::getResourceModel('catalog/product_collection')
したがって、基本的に ENABLED のステータスは、実行時にすでにチェックされています
$category->getProductCollection()
または類似の製品回収コール。