W bloku na stronie głównej z bestsellerami oraz na stronie bestsellerów wyświetlają się jedynie produkty proste.
Problem polega na tym, że w sklepie większość produktów jest konfigurowalna a one niestety nie wyświetlają się ani w bloku strony głównej ani w dedykowanej bestsellerom stronie.
Chcę wyświetlić w bloku strony głównej produkty konfigurowalne, a nie przynależące do niego produkty proste, oprócz tego chcę by wyświetlały się również produkty proste.
Kod bloku bestselerów na SG (korzystam tu z helpera, na stronie dedykowanej bestsellerom również korzystam z helpera więc jest analogiczna - no trochę inny układ divów etc ale to nie jest istotne):
Kod: Zaznacz cały
<?php if (($_products = $this->getProductCollection()) && $_products->getSize()): ?>
<!--BESTSELLERS-->
<div class="container">
<h2><?php echo $this->__('BESTSELLERS') ?></h2>
<div class="carousel es-carousel-wrapper style0">
<div class="es-carousel">
<div class="row">
<div class="product_outer">
<?php foreach ($_products->getItems() as $_product): ?>
<?php
$widthBig=258;
$heightBig=245;
$widthSmall=71;
$heightSmall=65;
?>
<!--PRODUCT-->
<!--PRODUCT EOF-->
<!--PRODUCT-->
<?php echo Mage::helper('shopconf')->getProductHtml($_product,$this,$widthBig,$heightBig,3)?>
<?php echo Mage::helper('shopconf')->getProductHover($_product,$this,$widthBig,$heightBig,$widthSmall,$heightSmall)?>
<!--PRODUCT EOF-->
<?php endforeach ?>
</div>
</div>
</div>
</div>
</div>
<!--BESTSELLERS EOF-->
<script type="text/javascript">
jQuery(function(){
jQuery('.carousel.style0').elastislide({
easing: 'easeInOutQuad',
speed: 800,
});
})
</script>
<?php endif; ?>
Kod helpera:
Kod: Zaznacz cały
public function countBestsellers()
{
$storeId = Mage::app()->getStore()->getId();
$products = Mage::getResourceModel('reports/product_collection')
->addOrderedQty()
//->addAttributeToSelect('*')
->addAttributeToSelect(array('name', 'price', 'small_image', 'short_description', 'description')) //edit to suit tastes
->addAttributeToFilter('status', 1)
->setStoreId($storeId)
->addStoreFilter($storeId)
->setOrder('ordered_qty', 'desc'); //best sellers on top
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($products);
Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($products);
return count($products);
}
Będę wdzięczny za wszelką pomoc - znalazłem kilka topic-ów na magentocommerce ale niestety nie są one dla mnie zrozumiałe.
Np coś takiego znalazłem, ale za nic nie wiem jak z tego skorzystać. Próby kończą się wysypaniem kodu:
Kod: Zaznacz cały
<?php
$storeId = Mage::app()->getStore()->getId();
$_productCollection = Mage::getResourceModel('reports/product_collection')
->addAttributeToSelect('*')
->addOrderedQty();
?>
<?php foreach($_productCollection as $product): ?>
<?php $parents = $product->loadParentProductIds()->getParentProductIds();?>
<?php if(!isset($downloads[$parents[0]]))$downloads[$parents[0]]=0 ?>
<?php $downloads[$parents[0]] += (int)$product->ordered_qty;?>
<?php endforeach; ?>
<?php foreach($downloads as $id=>$count): ?>
<?php $_product = Mage::getModel('catalog/product')->load($id) ?>
...
//now, $_product is configurable product which children have been ordered $count times