Posting in the Magento forums has been disabled pending the implementation of a new and improved forum solution which should better serve the community.

For new questions please post at magento.stackexchange.com, the community-run support site for the Magento community. We will be providing updates on the new forum solution soon. For questions or concerns please email community@magento.com.

Magento Forum

выбрать все товары категорий, которые выключены (или все товары, включенных катег
 
hell_dude
Jr. Member
 
Avatar
Total Posts:  20
Joined:  2012-08-29
 

Добрый день. Подскажите есть ли способ получить все товары неактивных категорий?
решил это таким путем:

public function check_Is_active($old_collection){
        $categorys 
= array();
        
$products = array();
        
$new_col = array();
//получаем ÑÐ¿Ð¸ÑÐ¾Ðº ÐºÐ°Ñ‚егорий ÐºÐ¾Ñ‚орые ÑÐºÑ€Ñ‹Ñ‚Ñ‹
        
$collection Mage::getModel('catalog/category')
            ->
getCollection()
            ->
joinAttribute('is_active''catalog_category/is_active''entity_id')
            ->
addAttributeToFilter('is_active','0')
            ->
getData();
//получаем ÑÐ¿Ð¸ÑÐ¾Ðº ÐºÐ°Ñ‚егорий ÐºÐ¾Ñ‚орые, ÑÐ²Ð»ÑÑŽÑ‚ся Ð´Ð¾Ñ‡ÐµÑ€Ð½Ð¸Ð¼Ð¸ ÑÐºÑ€Ñ‹Ñ‚Ñ‹Ñ… Ð¸ ÑÐ°Ð¼Ð¸ ÑÐºÑ€Ñ‹Ñ‚ые
        
foreach($collection as $col){
            $cat 
Mage::getModel('catalog/category')
                ->
getCollection()
                ->
addAttributeToFilter('path', array('like' => "%/{$col['entity_id']}%"))
                ->
getData();
            
$categorys array_merge($categorys,$cat);
        
}

        
foreach($categorys as $cat){
            $cats[] 
$cat['entity_id'];
        
}
        $cats 
implode(',',$cats);
//получаем ÑÐ¿Ð¸ÑÐ¾Ðº Ð¿Ñ€Ð¾ÑÑ‚Ñ‹Ñ… Ñ‚оваров Ð²Ñ…одящих Ð² ÑÐºÑ€Ñ‹Ñ‚ые ÐºÐ°Ñ‚егории
        
$prod_simple Mage::getModel('core/resource'
 ->
getConnection('core_read')
 ->
fetchAll("SELECT     prod.entity_id FROM catalog_category_product AS main
                     JOIN catalog_product_entity AS prod ON prod.entity_id = main.product_id
                      WHERE prod.type_id = 'simple' AND main.category_id IN ({
$cats})");
//заносим Ð¸Ñ… Ð² Ð¼Ð°ÑÑÐ¸Ð²
        
foreach($prod_simple as $p){
            $products[] 
$p['entity_id'];
        
}
//получаем ÑÐ¿Ð¸ÑÐ¾Ðº ÑÐ¾ÑÑ‚авных Ñ‚оваров Ð²Ñ…одящих Ð² ÑÐºÑ€Ñ‹Ñ‚ые ÐºÐ°Ñ‚егории
        
$prod_group Mage::getModel('core/resource')   
->
getConnection('core_read')
->
fetchAll("SELECT     prod.entity_id FROM catalog_category_product AS main
                   JOIN catalog_product_entity AS prod ON prod.entity_id = main.product_id
                   WHERE prod.type_id = 'grouped' AND main.category_id IN ({
$cats})");
//их Ñ‚оже Ð´Ð¾Ð±Ð°Ð²Ð»ÑÐµÐ¼ Ð² Ð¼Ð°ÑÑÐ¸Ð²
        
foreach($prod_group as $p){
            $products[] 
$p['entity_id'];
        
}

        
foreach($prod_group as $gr_prod){
            $grouped[] 
$gr_prod['entity_id'];
        
}
        $grouped 
implode(',',$grouped);
//получаем ÑÐ¿Ð¸ÑÐ¾Ðº Ð¿Ñ€Ð¾ÑÑ‚Ñ‹Ñ… Ñ‚оваров, ÑÐ²Ð»ÑÑŽÑ‰Ð¸Ñ…ся Ð´Ð¾Ñ‡ÐµÑ€Ð½Ð¸Ð¼Ð¸ ÑÐ¾ÑÑ‚авных
        
$simple_group Mage::getModel('core/resource')
->
getConnection('core_read')
->
fetchAll("SELECT     child_id FROM catalog_product_relation
                    WHERE parent_id IN ({
$grouped})");
//и Ð¸Ñ… Ñ‚оже Ð´Ð¾Ð±Ð°Ð²Ð»ÑÐµÐ¼ Ð² Ð¼Ð°ÑÑÐ¸Ð²
        
foreach($simple_group as $p){
                $products[] 
$p['child_id'];
        
}
//если ÐµÑÑ‚ÑŒ Ñ‚овар Ñ id Ð¸Ð· ÑÑ‚ого Ð¼Ð°ÑÑÐ¸Ð²Ð°, Ñ‚о Ð½Ðµ Ð²ÐºÐ»ÑŽÑ‡Ð°ÐµÐ¼
        
foreach($old_collection as $collection){
            
if (!in_array($collection['id']$products)){
                $new_collection[] 
$collection;
            
}
        }

        
return $new_collection;
    
}

товары, находящиеся в скрытых категориях, исключаются корректно, но может быть знаете способ по шустрее?

 
Magento Community Magento Community
Magento Community
Magento Community
 
Rugento
Guru
 
Avatar
Total Posts:  540
Joined:  2008-11-15
Russia, Vologda
 

У вас в шапке написано “как получить все товары”, а внизу “исключаются корректно”.
Вам нужно получить или исключить?

 
Magento Community Magento Community
Magento Community
Magento Community
 
hell_dude
Jr. Member
 
Avatar
Total Posts:  20
Joined:  2012-08-29
 

нужно исключить товары скрытых категорий

 
Magento Community Magento Community
Magento Community
Magento Community
 
hell_dude
Jr. Member
 
Avatar
Total Posts:  20
Joined:  2012-08-29
 

подсказали использовать индексные таблицы:
catalog_category_flat_store_1 для вывода неактивных категорий
catalog_category_product_index для вывода товаров из этих неактивных категорий, в последствии выборка помимо этих id

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top