2013-10-29 5 views
7

Oba sklepy mają inną kategorię root. Główny sklep to domyślne dane przykładowe, drugi sklep ma tylko jeden produkt, który został dodany. Pomyślałbym, że przy użyciu filtru sklepu pojawią się tylko produkty z kategorii głównej bieżącego sklepu. Ale pokazuję każdy produkt. Testuję to, umieszczając następujące elementy w szablonie widoku kategorii:Magento Uzyskaj kolekcję produktów Filtruj według identyfikatora sklepu

$store_id = Mage::app()->getStore()->getId(); 
$_testproductCollection = Mage::getResourceModel('reports/product_collection') 
->setStoreId($storeId) 
->addStoreFilter($store_id) 
->addAttributeToSelect('*'); 
$_testproductCollection->load(); 
foreach($_testproductCollection as $_testproduct){ 
echo $this->htmlEscape($_testproduct->getName()); 
}; 

Jeśli wydrukuję identyfikator sklepu, otrzymam prawidłowy numer. Mam tylko jeden produkt w drugim sklepie, więc dlaczego otrzymuję wszystkie produkty ze wszystkich sklepów? Mogę ustawić każdy produkt w Main Store, aby nie wyświetlał się w Store2, a następnie dodać filtr widoczności, ale to trwało wiecznie.

Również Właśnie zauważyłem, jeśli echo identyfikatora produkty sklepu, uzyskać aktualny identyfikator, a nie sklep to przypisane do:

echo $_testproduct->getStoreId() 

Jak rozwiązać ten problem?

Odpowiedz

5

Spróbuj uzyskać jak chcesz

$counter = ""; 
/*$model=Mage::getModel('catalog/product')->setStoreId($post['stores']); 
$rootCategoryId = Mage::app()->getStore($post['stores'])->getRootCategoryId(); 
$products = $model->getCollection(); 
$products->addStoreFilter($post['stores']); 
$products->addAttributeToFilter('sku', array('nlike' => 'B%')); 
$products->addAttributeToFilter('status',1); 
$counter=$products->getData();*/ 
$model=Mage::getModel('catalog/product')->setStoreId($post['stores']); 
$category_model = Mage::getModel('catalog/category'); 
$rootCategoryId = Mage::app()->getStore($post['stores'])->getRootCategoryId(); 
$_category = $category_model->load($rootCategoryId); 
$all_child_categories = $category_model->getResource()->getAllChildren($_category); 
foreach($all_child_categories as $storecategories): 

$category = Mage::getModel('catalog/category')->load($storecategories); 
$products = $category->getProductCollection(); 
//echo "Category id is::".$storecategories."Products are::".count($products); 
//echo "<br/>"; 
foreach($products as $collection): 
    $removecatindex = $collection->getData(); 
    unset($removecatindex['cat_index_position']); 
    $counter[] = $removecatindex; 
    endforeach; 
endforeach; 
5

Można również spróbować dodać Filtr magazynu do modelu zasobów takich jak to:

$collection = Mage::getResourceModel('catalog/product_collection') 
    ->addStoreFilter($this->getStoreId()) 
    ->addAttributeToSelect('*'); 
2
$collection = Mage::getModel('catalog/product')->getCollection()->addStoreFilter($store_id) 
->addAttributeToSelect('*') // select all attributes 
->setPageSize(5000) // limit number of results returned 
->setCurPage(1); // set the offset (useful for pagination) 

// we iterate through the list of products to get attribute values 
foreach ($collection as $product) { 
    echo $product->getName(); //get name 
    echo (float) $product->getPrice(); //get price as cast to float 
    echo $product->getDescription(); //get description 
    echo $product->getShortDescription(); //get short description 
    echo $product->getTypeId(); //get product type 
    echo $product->getStatus(); //get product status 

    // getCategoryIds(); returns an array of category IDs associated with the product 
    foreach ($product->getCategoryIds() as $category_id) { 
     $category = Mage::getModel('catalog/category')->load($category_id); 
     echo $category->getName(); 
     echo $category->getParentCategory()->getName(); // get parent of category 
    } 
    //gets the image url of the product 
    echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA). 
     'catalog/product'.$product->getImage(); 
    echo $product->getSpecialPrice(); 
    echo $product->getProductUrl(); //gets the product url 
    echo '<br />'; 
}