magentoe-commercephpmage

Display magento products by category ID


I need to know how can I display products in a page like (cart, below total) only few products by ID. Eg: products with id 2,3,4 and 5.

<div class="freeProducts voucher code">
    <?php

    $categoryid = 64;

    $category = new Mage_Catalog_Model_Category();
    $category->load($categoryid);
    $collection = $category->getProductCollection();
    $collection->addAttributeToSelect('*');

    foreach ($collection as $_product) { ?>

    <a href="<?php echo $_product->getProductUrl() ?>"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(200); ?>" width="200" height="200" alt="" /></a> <a href="<?php echo $_product->getProductUrl(); ?>"><?php echo $_product->getName(); ?></a>

    <?php } ?>
</div>

At this moment I can see the image for each product, and the title. I need to display the ADD TO CART and price.

Anyone can help please?


Solution

  • get Product from specific category

    $categoryIds = array(2,4);//category id
    
    $collection = Mage::getModel('catalog/product')
                                 ->getCollection()
                                 ->joinField('category_id', 'catalog/category_product', 'category_id', 'product_id = entity_id', null, 'left')
                                 ->addAttributeToSelect('*')
                                 ->addAttributeToFilter('category_id', array('in' => $categoryIds))
    

    get Product for specific product id

    $productids = array(52,62);//product ids
    $collection = Mage::getResourceModel('catalog/product_collection');
    $collection->addFieldToFilter('entity_id',array( 'in' => $productids));
    

    then write this in phtml

    <?php $_collectionSize = $collection->count() ?>
        <?php //$_columnCount = $this->getColumnCount(); ?>
        <?php $i=0; foreach ($collection as $product): ?>
            <?php if ($i++%4==0): ?>
            <ul class="products-grid">
            <?php endif ?>
                <li class="item<?php if(($i-1)%$_columnCount==0): ?> first<?php elseif($i%$_columnCount==0): ?> last<?php endif; ?>">
                    <a href="<?php echo $product->getProductUrl()?>" title="<?php echo $product->getName()?>">
                            <img src="<?php echo Mage::helper('catalog/image')->init($product, 'small_image')->resize(197, 167); ?>" alt="<?php echo $product->getName()?>" border="0" />
                        </a>
                    <h2 class="product-name"><a href="<?php echo $product->getProductUrl()?>" title="<?php echo $product->getName()?>"><?php echo $product->getName() ?></a></h2>
                   <div class="price-box">
                   <?php echo Mage::helper('core')->currency($product->getPrice(),true,false);?>
                   </div>
                    <div class="actions">
                        <?php if($product->isSaleable()): ?>
                            <button class="button" onclick="setLocation('<?php echo Mage::getUrl('checkout/cart/add/')?>product/<?php echo $product->getId() ?>/')" title="<?php echo $this->__('Köp');?>" type="submit"><span><span><?php echo $this->__('Köp');?></span></span></button>
                        <?php else: ?>
                            <p class="availability out-of-stock"><span><?php echo $this->__('Out of stock') ?></span></p>
                        <?php endif; ?>
    
                    </div>
                </li>
            <?php if ($i%$_columnCount==0 || $i==$_collectionSize): ?>
            </ul>
            <?php endif ?>
            <?php endforeach ?>
    

    hope this help you