Last active
December 5, 2016 16:08
-
-
Save rob-st/5ef16d8922da46e2d37f44501b135cdb to your computer and use it in GitHub Desktop.
Magento list view template, keeping newest products on top, sorting the rest by specified backend-order
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Magento | |
* | |
* NOTICE OF LICENSE | |
* | |
* This source file is subject to the Academic Free License (AFL 3.0) | |
* that is bundled with this package in the file LICENSE_AFL.txt. | |
* It is also available through the world-wide-web at this URL: | |
* http://opensource.org/licenses/afl-3.0.php | |
* If you did not receive a copy of the license and are unable to | |
* obtain it through the world-wide-web, please send an email | |
* to license@magento.com so we can send you a copy immediately. | |
* | |
* DISCLAIMER | |
* | |
* Do not edit or add to this file if you wish to upgrade Magento to newer | |
* versions in the future. If you wish to customize Magento for your | |
* needs please refer to http://www.magento.com for more information. | |
* | |
* @category design | |
* @package base_default | |
* @copyright Copyright (c) 2006-2016 X.commerce, Inc. and affiliates (http://www.magento.com) | |
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) | |
*/ | |
?> | |
<?php | |
/** | |
* Product list template | |
* | |
* @see Mage_Catalog_Block_Product_List | |
*/ | |
?> | |
<?php | |
/* --> | |
* Setting the first variables: current date, sort order and sort direction as set in Magento's backend */ | |
$todayDate = Mage::app()->getLocale()->date()->toString(Varien_Date::DATETIME_INTERNAL_FORMAT); | |
$currentOrder = $this->getChild('toolbar')->getCurrentOrder(); | |
$currentDirection = $this->getChild('toolbar')->getCurrentDirection(); | |
/* <-- */ | |
$_productCollection=$this->getLoadedProductCollection(); | |
$_helper = $this->helper('catalog/output'); | |
/* --> | |
* Since product collection now has been loaded, we're read to manipulate it */ | |
$_productCollection->getSelect()->reset(Zend_Db_Select::ORDER); | |
$_productCollection->addAttributeToSort('news_to_date','DESC')->clear(); | |
$_productCollection->getSelect()->order( $currentOrder . ' ' . $currentDirection ); | |
/* <-- */ | |
?> | |
<?php if(!$_productCollection->count()): ?> | |
<p class="note-msg"><?php echo $this->__('There are no products matching the selection.') ?></p> | |
<?php else: ?> | |
<div class="category-products"> | |
<?php echo $this->getToolbarHtml() ?> | |
<?php // List mode ?> | |
<?php if($this->getMode()!='grid'): ?> | |
<?php $_iterator = 0; ?> | |
<ol class="products-list" id="products-list"> | |
<?php foreach ($_productCollection as $_product): ?> | |
<?php | |
/* --> | |
* Adding some debug information. Make sure to add it to the list view too, | |
* if you are not using the grid option. List view starts line 114 in this file. | |
*/ ?> | |
<div style="font-family:monospace;"> | |
<?php echo $_productCollection->getSelect()->__toString(); ?><br /> | |
Current Order: <?php var_dump($currentOrder); ?><br /> | |
Current Direction: <?php var_dump($currentDirection); ?><br /> | |
today's date: <?php echo $todayDate; ?> | |
</div> | |
<?php /* <-- */ ?> | |
<li class="item<?php if( ++$_iterator == sizeof($_productCollection) ): ?> last<?php endif; ?>"> | |
<?php // Product Image ?> | |
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" class="product-image"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(135); ?>" width="135" height="135" alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" /></a> | |
<?php // Product description ?> | |
<div class="product-shop"> | |
<div class="f-fix"> | |
<?php $_productNameStripped = $this->stripTags($_product->getName(), null, true); ?> | |
<h2 class="product-name"><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $_productNameStripped; ?>"><?php echo $_helper->productAttribute($_product, $_product->getName() , 'name'); ?></a></h2> | |
<?php /* --> Deleting 'news_to_date' when it ist in the past <-- */ | |
$newToDate = $_product->getNewsToDate(); | |
if( $newToDate setData('news_to_date', NULL)->getResource()->saveAttribute($_product, 'news_to_date'); | |
?> | |
<?php if($_product->getRatingSummary()): ?> | |
<?php echo $this->getReviewsSummaryHtml($_product) ?> | |
<?php endif; ?> | |
<?php echo $this->getPriceHtml($_product, true) ?> | |
<?php if($_product->isSaleable()): ?> | |
<p><button type="button" title="<?php echo Mage::helper('core')->quoteEscape($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></p> | |
<?php else: ?> | |
<p class="availability out-of-stock"><span><?php echo $this->__('Out of stock') ?></span></p> | |
<?php endif; ?> | |
<div class="desc std"> | |
<?php echo $_helper->productAttribute($_product, $_product->getShortDescription(), 'short_description') ?> | |
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $_productNameStripped ?>" class="link-learn"><?php echo $this->__('Learn More') ?></a> | |
</div> | |
<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> | |
</div> | |
</li> | |
<?php endforeach; ?> | |
</ol> | |
<script type="text/javascript">decorateList('products-list', 'none-recursive')</script> | |
<?php else: ?> | |
<?php // Grid Mode ?> | |
<?php $_collectionSize = $_productCollection->count() ?> | |
<?php $_columnCount = $this->getColumnCount(); ?> | |
<?php $i=0; foreach ($_productCollection 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->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" class="product-image"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(135); ?>" width="135" height="135" alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" /></a> | |
<?php /* --> Deleting 'news_to_date' when it ist in the past <-- */ | |
$newToDate = $_product->getNewsToDate(); | |
if( $newToDate setData('news_to_date', NULL)->getResource()->saveAttribute($_product, 'news_to_date'); | |
?> | |
<h2 class="product-name"><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($_product->getName(), null, true) ?>"><?php echo $_helper->productAttribute($_product, $_product->getName(), 'name') ?></a></h2> | |
<?php if($_product->getRatingSummary()): ?> | |
<?php echo $this->getReviewsSummaryHtml($_product, 'short') ?> | |
<?php endif; ?> | |
<?php echo $this->getPriceHtml($_product, true) ?> | |
<div class="actions"> | |
<?php if($_product->isSaleable()): ?> | |
<button type="button" title="<?php echo Mage::helper('core')->quoteEscape($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> | |
<?php endif; ?> | |
<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==$_collectionSize): ?> | |
</ul> | |
<?php endif ?> | |
<?php endforeach ?> | |
<script type="text/javascript">decorateGeneric($$('ul.products-grid'), ['odd','even','first','last'])</script> | |
<?php endif; ?> | |
<div class="toolbar-bottom"> | |
<?php echo $this->getToolbarHtml() ?> | |
</div> | |
</div> | |
<?php endif; ?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment