`
kirenenko04
  • 浏览: 151045 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

Add sort by Saleability And Use Custom paging number override core product list

 
阅读更多

1 . create a collection.php to get data

 

<?php
class Bysoft_Mycatalog_Block_Apparel_Collection extends Mage_Core_Block_Template
{

	public function __construct()
	{
		parent::__construct();
		$collection = Mage::getModel('catalog/product')->getCollection();
		$this->setCollection($collection);
		if ($this->getCurrentOrder()) {
			if($this->getCurrentOrder() == 'saleability') {
				$this->getCollection()->getSelect()->
				joinLeft('sales_flat_order_item AS sfoi',
						'e.entity_id = sfoi.product_id',
						'SUM(sfoi.qty_ordered) AS ordered_qty')->
						group('e.entity_id')->order('ordered_qty ' . $this->getCurrentDirectionReverse());
				}
				else {
				$this->getCollection()->setOrder($this->getCurrentOrder(), $this->getCurrentDirection());
				}
		}
		return $this;
	}

	protected function _prepareLayout()
	{
		parent::_prepareLayout();

		$toolbar = $this->getToolbarBlock();

		// called prepare sortable parameters
		$collection = $this->getCollection();

		// use sortable parameters
		if ($orders = $this->getAvailableOrders()) {
			$toolbar->setAvailableOrders($orders);
		}
		if ($sort = $this->getSortBy()) {
			$toolbar->setDefaultOrder($sort);
		}
		if ($dir = $this->getDefaultDirection()) {
			$toolbar->setDefaultDirection($dir);
		}
		$toolbar->setCollection($collection);

		$this->setChild('toolbar', $toolbar);
		$this->getCollection()->load();
		return $this;
	}
	public function getDefaultDirection(){
		return 'asc';
	}
	public function getAvailableOrders(){
		return array('created_time'=> 'Created Time','price'=>'Price','salesablity'=>'Saleability');
	}
	public function getSortBy(){
		return 'collection_id';
	}
	public function getToolbarBlock()
	{
		$block = $this->getLayout()->createBlock('mycatalog/apparel_toolbar', microtime());
		return $block;
	}
	public function getMode()
	{
		return $this->getChild('toolbar')->getCurrentMode();
	}

	public function getToolbarHtml()
	{
		return $this->getChildHtml('toolbar');
	}
}

 2.  to override toolbar class , set custom limit per page

<?php
class Bysoft_Mycatalog_Block_Apparel_Toolbar extends Mage_Catalog_Block_Product_List_Toolbar{
	public function getPagerHtml()
	{
		$pagerBlock = $this->getLayout()->createBlock('page/html_pager');

		if ($pagerBlock instanceof Varien_Object) {

			/* @var $pagerBlock Mage_Page_Block_Html_Pager */
			$pagerBlock->setAvailableLimit($this->getAvailableLimit());
			
			$pagerBlock->setUseContainer(false)
			->setShowPerPage(false)
			->setShowAmounts(false)
			->setLimitVarName($this->getLimitVarName())
			->setPageVarName($this->getPageVarName())
			->setCollection($this->getCollection());
			return $pagerBlock->toHtml();
		}
		return '';
	}
	
	protected function _getAvailableLimit($mode='')
	{
		return array(36=>36,72=>72,108=>108,'all'=>'all');
	}
}

 3. for custom list phtml page

<?php echo $this->getMessagesBlock()->getGroupedHtml() ?>
<?php $collection = $this->getCollection(); ?>
<div class="page-title">
    <h1><?php echo $this->__('My Collection') ?></h1>
</div>
<?php echo $this->getToolbarHtml(); ?>
<?php if($collection->getSize()): ?>
<?php if(1 || $this->getMode() == 'list'){ ?>
<div class="product-list-div">
<ul class="list-4-column-ul column-1 clearfix">
<?php $i = 0;?>
	<?php foreach ($collection as $_product):?>
	<?php ++$i;?>
	<?php $_product = Mage::getModel('catalog/product')->load($_product->getId());?>
	<?php  $prod_img_src = (string)Mage::helper('catalog/image')->init($_product, 'image');?>
	<?php $lazy_load_img = $this->getSkinUrl('images/lazy-load.gif');?>
		<li>
		<div class="prod-img">
			<a href="<?php echo $_product->getProductUrl() ;?>" >
				<img class="lazy"  data-original="<?php echo $prod_img_src;?>"/>
			</a>
		</div>
		
		<div class="prod-info  pc-info">
			<div class="layer_info">
				<p class="product-manufacturer"><?php echo  $_product->getAttributeText('manufacturer');?></p>
				<p class="product-name"><?php echo $_product->getData('name');?></p>
			</div>
		</div>
		
		</li>
		
		<?php if ($i%4 == 0 ):?>
		</ul>
		<ul class="list-4-column-ul column-<?php echo ($i/4)+1 ?> clearfix" >
		<?php endif;?>
		
	<?php endforeach;?>
</ul>
</div>
<script type="text/javascript">decorateTable('my-custom-table');</script>
<?php }else{ ?>
	<!-- List Mode HTML Here -->
<?php } ?>
<?php echo $this->getToolbarHtml(); ?>
<?php else: ?>
    <p><?php echo $this->__('The collection is empty.'); ?></p>
<?php endif ?>


<script>
jQuery(document).ready(function($){
	jQuery.extend(jQuery.browser,{Mobile : navigator.userAgent.toLowerCase().match(/mobile/i)});
    

		if($(window).width()<768){
			$(".product-list-div").carouFredSel({
				items: 1,
				prev: "#prev",
				next:"#next",
				auto: false
			});
			//alert($(".product-list-div ul").width());
			$("img.lazy").lazyload({
				threshold:0,
				event:'click'
			});
			var $src = $('.product-list-div ul.column-1 img').attr('data-original');
			$('.product-list-div ul.column-1 img').attr('src',$src);
			
			$('#prev').click(function(){
				var $img = $('.product-list-div ul:first').prev().find('img');
				$img.each(function(){//triggerHandler()方法不会触发事件的默认行为,但只会影响第一个匹配的元素
					if($(this).attr('src')!= $(this).attr('data-original')){
						$(this).triggerHandler( "click" ); 
					}
				})
			})
			$('#next').click(function(){
				var $img = $('.product-list-div ul:first').next().find('img');
				$img.each(function(){
					if($(this).attr('src')!= $(this).attr('data-original')){
						$(this).triggerHandler( "click" );
					}
				})
				
			})
		}else{
			$("img.lazy").lazyload({
				threshold:-50
			});
		}
	
})
</script>
分享到:
评论

相关推荐

    Gridview Custom Paging

    在ASP.NET Web Forms开发中,GridView控件是一个非常常用的数据展示组件,它可以轻松地将数据库中的数据绑定到表格中,并提供了内置的分页功能。然而,有时候内置的分页功能可能无法满足某些特定的需求,例如自定义...

    Programming Excel With Vba And .net.chm

    CustomView and CustomViews Members Section 11.10. HPageBreak, HPageBreaks, VPageBreak, VPageBreaks Members Section 11.11. PageSetup Members Section 11.12. Graphic Members Section 11.13. ...

    【z-paging下拉刷新、上拉加载】示例demo

    在page中无需处理任何分页相关逻辑,无需在data中定义任何分页相关变量,全由z-paging内部处理。 【超灵活,支持各种类型自定义】支持自定义下拉刷新,自定义上拉加载更多,自带自定义下拉刷新效果,及其他数十种...

    PagedRect - Paging Galleries and Menus for Unity UI 1.54

    PagedRect是Unity UI的完整分页解决方案。 PagedRect可以轻松用于: -创建多页教程 -创建多页菜单 -创建图像滑块 -创建向导 -创建选项卡式视图 -创建自定义UI元素

    AIX 中 Paging Space 使用率过高的分析与解决

    AIX 操作系统中的 Paging Space 是很重要的设备,Paging Space 使用率过高将影响系统整体性能,甚至会造成系统挂起。文中对 Paging Space 使用率过高的常见原因进行了分析,并给出了相应的解决方案。AIX操作系统中...

    uniapp基于z-paging实现页面下拉刷新、上拉加载,分页加载案例

    这可以通过在命令行中运行`uni plugin add z-paging`完成。安装后,z-paging的组件将被引入到你的项目中。 2. **配置main.js**:在`main.js`文件中,你需要导入z-paging并注册为全局组件,这样在任何页面中都可以...

    一个简单Paging自定义分页范例

    一个简单的Paging自定义分页范例 一个简单的Paging自定义分页范例 一个简单的Paging自定义分页范例 一个简单的Paging自定义分页范例 一个简单的Paging自定义分页范例 一个简单的Paging自定义分页范例

    jquery tree and paging

    在"jquery tree and paging"这个主题中,我们主要关注的是两个关键概念:jQuery的树形菜单和分页功能。 首先,让我们详细讨论jQuery的树形菜单。在网页设计中,树形菜单是一种组织大量信息的有效方式,它通常以层级...

    Intel® 64 and IA-32 Architectures Application Note TLBs, Paging-Structure Caches, and Their Invalidation

    本篇应用注释深入探讨了Intel® 64 和 IA-32 架构中的翻译后备缓冲器(Translation Lookaside Buffers, TLB)与分页结构缓存(Paging-Structure Caches),以及这些组件的失效机制。这些技术对于提高现代计算机系统...

    paging.js分页插件.zip

    paging.js分页插件 &lt;script src="js/jquery.min.js"&gt;&lt;/script&gt; &lt;script type="text/javascript" src="js/paging.js"&gt; &lt;!--分页--&gt; &lt;div id="page" class="page_div"&gt;&lt;/div&gt;

    PagingGrid简介

    **PagingGrid简介** 在IT领域,数据展示和管理是常见的需求,特别是在Web应用程序中,当数据量庞大时,一次性加载所有数据不仅会影响页面性能,也会对用户体验造成负面影响。为了解决这一问题,"PagingGrid...

    段页式管理(combined paging and segmentation).rar

    段页式管理是一种操作系统内存管理的方法,它结合了分段和分页两种技术,以提供更灵活和安全的内存分配机制。在理解这种管理方式之前,我们先分别介绍分段和分页的概念。 分段是早期操作系统中常用的一种内存管理...

    ASP.NET MVC with Entity Framework and CSS

    • Authorization and Authentication using Microsoft Identity v2 by making use of Microsoft example code including correct use of redirection after login and registration • Advanced techniques ...

    AIX中Paging_Space使用率过高的分析与解决

    AIX操作系统中PagingSpace的重要性及其使用率分析与解决方法 在AIX操作系统中,PagingSpace(分页空间)是一个非常重要的概念,它是系统用来支持虚拟内存的关键组成部分。当PagingSpace的使用率过高时,会严重影响...

    jquery ui tabs paging 扩展

    使用上也非常简单,在页面中载入 jquery.ui.tabs.paging.css 和 jquery.ui.tabs.paging.js 文件,在创建 tabs 对象后再执行代码激活一下插件 $tabs.tabs('paging'); 就可以了。 压缩包内带有 demo 。

    jQuery-Paging动态分页数据获取插件.zip

    《jQuery-Paging动态分页数据获取插件》 在网页开发中,数据的展示往往涉及到大量的信息处理,尤其是在用户交互时,如何优雅地处理大量数据的加载和展示,是提升用户体验的关键。jQuery-Paging插件就是一个针对这种...

    jQuery-Paging动态分页数据获取插件

    jQuery-Paging是一款强大的JavaScript插件,专为网页中的动态数据分页设计,它极大地简化了在Web应用中处理大量数据的展示方式。该插件基于流行的JavaScript库jQuery构建,提供了直观且用户友好的分页体验,同时具备...

    Odin2.0.15.rar

    drag & drop, insert and delete individual items, multi-dim arrays [NEW], tables [NEW], cross-list and even cross-window item dragging, paging, nested list drawing, and much more! ? Insanely ...

    paging data

    **Paging Data in Java** 在Java开发中,数据分页是一种常见的优化技术,尤其是在处理大量数据集合时。分页能够有效地提高应用性能,减少内存占用,并提供更好的用户体验,因为用户无需等待所有数据加载完毕,只需...

Global site tag (gtag.js) - Google Analytics