2013-10-29 10 views
7

Beide Shops haben eine andere Stammkategorie. Main Store ist die Standard-Beispieldaten, Second Store hat nur ein Produkt, das ich hinzugefügt habe. Ich hätte gedacht, dass mit dem Store-Filter nur Produkte innerhalb der Root-Kategorie des aktuellen Shops angezeigt würden. Aber ich zeige jedes Produkt. Ich teste dies durch die folgenden in meiner Kategorie Ansichtsvorlage platzieren:Magento Get Product Collection Filtern nach Store-ID

$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()); 
}; 

Wenn ich den Laden ID drucken, es ist mir die richtige Nummer zu geben. Ich habe nur ein Produkt im zweiten Store, also warum bekomme ich jedes Produkt aus allen Geschäften zurück? Ich kann jedes Produkt im Hauptspeicher so einstellen, dass es nicht in Store2 angezeigt wird, und dann einen Sichtbarkeitsfilter hinzufügen, aber das würde ewig dauern.

Auch ich nur bemerkt, wenn ich die Produkte speichern ID Echo, erhalte ich die aktuelle ID, nicht das Geschäft es zugeordnet:

echo $_testproduct->getStoreId() 

Wie dieses Problem zu lösen?

Antwort

5

Versuchen Sie, diese Sie erhalten, wie Sie

$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

Sie wollen auch einen Speicher-Filter hinzugefügt, um das Ressourcenmodell wie diese versuchen:

$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 />'; 
} 
Verwandte Themen