I've created a Magento site for a client who wants to have a special price page, wherein she could put products having special price/discounted price..
Requirements:
=========================================
special.phtml
==============================================
In the CMS Page that you created, click Design tab then in the Page layout>Layout update xml put this code..
There you have it... Don't forget to put a special price, special-from-date and special-to-date in your products...
Reference: http://www.magentocommerce.com/boards/viewthread/16098/P15/ :kkrieger's post
Requirements:
- app/code/local/Mage/Catalog/Block/Product/Special.php
- app/design/frontend/default/donna/template/catalog/product/special.phtml
- Magento backend - CMS>Pages>create-a-special-price-page
=========================================
<?php class Mage_Catalog_Block_Product_Special extends Mage_Catalog_Block_Product_List { function get_prod_count() { //unset any saved limits Mage::getSingleton('catalog/session')->unsLimitPage(); return (isset($_REQUEST['limit'])) ? intval($_REQUEST['limit']) : 9; }// get_prod_count function get_cur_page() { return (isset($_REQUEST['p'])) ? intval($_REQUEST['p']) : 1; }// get_cur_page /** * Retrieve loaded category collection * * @return Mage_Eav_Model_Entity_Collection_Abstract **/ protected function _getProductCollection() { $todayDate = Mage::app()->getLocale()->date()->toString(Varien_Date::DATETIME_INTERNAL_FORMAT); $tomorrow = mktime(0, 0, 0, date('m'), date('d')+1, date('y')); $dateTomorrow = date('m/d/y', $tomorrow); $collection = Mage::getResourceModel('catalog/product_collection'); $collection->setVisibility(Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds()); $collection = $this->_addProductAttributesAndPrices($collection) ->addStoreFilter() ->addAttributeToSort('entity_id', 'desc') //THIS WILL SHOW THE LATEST PRODUCTS FIRST ->addAttributeToFilter('special_from_date', array('date' => true, 'to' => $todayDate)) ->addAttributeToFilter('special_to_date', array('or'=> array(0 => array('date' => true, 'from' => $dateTomorrow), 1 => array('is' => new Zend_Db_Expr('null')))), 'left') ->setPageSize($this->get_prod_count()) ->setCurPage($this->get_cur_page()); $this->setProductCollection($collection); return $collection; }// _getProductCollection }// Mage_Catalog_Block_Product_New ?>==============================================
special.phtml
==============================================
<?php if (($_products = $this->getProductCollection()) && $_products->getSize()): ?> <div class="widget widget-new-products"> <div class="widget-title"> <h2><?php echo $this->__('Special Product') ?></h2> </div> <div class="widget-products"> <?php $_columnCount = $this->getColumnCount(); ?> <?php $i=0; foreach ($_products->getItems() as $_product): ?> <?php if ($i++%$_columnCount==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 $this->htmlEscape($_product->getName()) ?>" class="product-image"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image') ?>" width="195px" height="195px" alt="<?php echo $this->htmlEscape($_product->getName()) ?>" /></a> <h3 class="product-name"><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->htmlEscape($_product->getName()) ?>)"><?php echo $this->htmlEscape($_product->getName()) ?></a></h3> <!-- ###### BRANDS EG. BY CHIC ON A MISSION ###### --> <div class="product-brand"><?php echo $this->htmlEscape($_product->getextraline()) ?></div> <?php echo $this->getReviewsSummaryHtml($_product, 'short') ?> <?php echo $this->getPriceHtml($_product, true, '-widget-new-grid') ?> <div class="actions"> <?php if($_product->isSaleable()): ?> <!-- <button type="button" title="<?php /* echo $this->__('Add to Cart') ?>" class="button btn-cart" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart')*/ ?></span></span></button>--> <?php else: ?> <!--<p class="availability out-of-stock"><span><?php // echo $this->__('Out of stock') ?></span></p>--> <div class="out-of-stock-special"><img src="<?php echo $this->getSkinUrl('images/donna/soldout-overon.png') ?>" alt="uitverkocht" width="50px" /></div> <?php endif; ?> <?php /*<ul class="add-to-links"> <?php if ($this->helper('wishlist')->isAllow()) : ?> <li><a href="<?php echo $this->helper('wishlist')->getAddUrl($_product) ?>" class="link-wishlist"><?php echo $this->__('Add to Wishlist') ?></a></li> <?php endif; ?> <?php if($_compareUrl=$this->getAddToCompareUrl($_product)): ?> <li><span class="separator">|</span> <a href="<?php echo $_compareUrl ?>" class="link-compare"><?php echo $this->__('Add to Compare') ?></a></li> <?php endif; ?> </ul> */ ?> </div> </li> <?php if ($i%$_columnCount==0 || $i==count($_products)): ?> </ul> <?php endif ?> <?php endforeach; ?> <div class="toolbar-bottom"> <?php // echo $this->getToolbarBlock()->setTemplate('catalog/product/list/ctoolbar.phtml')->toHtml(); ?> </div> </div> </div> <?php endif; ?>========================================
In the CMS Page that you created, click Design tab then in the Page layout>Layout update xml put this code..
<reference name="content"> <block type="catalog/product_special" name="product_special" template="catalog/product/list.phtml"> <block type="catalog/product_list_toolbar" name="product_list_toolbar" template="catalog/product/list/toolbar.phtml"> <action method="setDefaultDirection"><dir>desc</dir></action> <action method="setDefaultOrder"><field>entity_id</field></action> <block type="page/html_pager" name="product_list_toolbar_pager" /> </block> <action method="addColumnCountLayoutDepend"><layout>three_columns</layout><count>3</count></action> <action method="setToolbarBlockName"><name>product_list_toolbar</name></action> </block> </reference>========================================
There you have it... Don't forget to put a special price, special-from-date and special-to-date in your products...
Reference: http://www.magentocommerce.com/boards/viewthread/16098/P15/ :kkrieger's post
Hi,
ReplyDeleteI'm using this special page script on Brandeer Sale
Now I've the problem, that I cant set the number of products on the sale page. It always takes the store default (15) or the value you've choosen in the toolbar..
I tried it with
[CODE]
12
[/CODE]
but no changes.. Any suggestions?
It is not working for Magento 1.5.0.1. PLease advise.
ReplyDeleteI don't know why but it works in my system only showing 8 products??
ReplyDeleteworks great :P
ReplyDeleteHi,
ReplyDeleteI really surprised beause in my Magento I have not this folder: app/code/local/Mage/ .....
I downloaded magento again and it is not inside (1.7.0.2).
Any ideas?
You must create it yourself
DeleteThis works, but if I try to sort it redirects to the home page. do you know how to keep the search on the special page?
ReplyDelete