本文介绍如何让magento创建一个带分页功能的新到产品页面,方便我们在首页或者其它CMS Page调用和展示新到产品。

在Magento我们经常有的做法是建立一个可以调用新产品的block,然后通过:

{{block type="catalog/product_new" column_count="6" products_count="100" name="home.catalog.product.new" alias="product_homepage" template="catalog/product/new.phtml"}}

调用,这样就可以在Magento首页显示新到产品 或者其他位置调用,前提要有添加新产品并设置新产品期间了。

现在是要让Magento创建一个带分页功能的新到产品展示Page,自动展示有设置了“Set Product as New from Date – Set Product as New to Date”的新到产品。

话入正题。Magento在CMS Page添加带分页功能的新到产品页面步骤如下;

创建路径:app/code/local/Mage/Catalog/Block/Product

创建文件:app/code/local/Mage/Catalog/Block/Product/New.php

New.php将覆盖掉magento core里的New.php,所以如果原来New.php有在使用的话local的这个文件另外命名区分开。

添加以下内容到New.php

<?php
//chen@sjolzy.cn
class Mage_Catalog_Block_Product_New 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']) : 12;
}// 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); $collection = Mage::getResourceModel('catalog/product_collection');
$collection->setVisibility(Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds()); $collection = $this->_addProductAttributesAndPrices($collection)
->addStoreFilter()
->addAttributeToFilter('news_from_date', array('date' => true, 'to' => $todayDate))
->addAttributeToFilter('news_to_date', array('or'=> array(
0 => array('date' => true, 'from' => $todayDate),
1 => array('is' => new Zend_Db_Expr('null')))
), 'left')
->addAttributeToSort('news_from_date', 'desc')
->setPageSize($this->get_prod_count())
->setCurPage($this->get_cur_page()); $this->setProductCollection($collection); return $collection;
}// _getProductCollection
}// Mage_Catalog_Block_Product_New
?>

保存后,创建CMS里的新到产品列表Page。添加后,设置Design的内容为以下内容:

<reference name="content">
<block type="catalog/product_new" name="product_new" template="catalog/product/list.phtml">
<action method="setCategoryId"><category_id>10</category_id></action>
<action method="setColumnCount"><column_count>6</column_count></action>
<action method="setProductsCount"><count>0</count></action>
<block type="catalog/product_list_toolbar" name="product_list_toolbar" template="catalog/product/list/toolbar.phtml">
<block type="page/html_pager" name="product_list_toolbar_pager" />
<action method="setDefaultGridPerPage"><limit>12</limit></action>
<action method="addPagerLimit"><mode>grid</mode><limit>12</limit></action>
<action method="addPagerLimit"><mode>grid</mode><limit>24</limit></action>
<action method="addPagerLimit"><mode>grid</mode><limit>36</limit></action>
<action method="addPagerLimit"><mode>grid</mode><limit>48</limit></action>
<action method="addPagerLimit" translate="label"><mode>grid</mode><limit>all</limit><label>All</label></action>
</block>
<action method="addColumnCountLayoutDepend"><layout>one_column</layout><count>6</count></action>
<action method="setToolbarBlockName"><name>product_list_toolbar</name></action>
</block>
</reference>

这样就可以保存查看效果了。以下简要备记几点说明:

<block type="catalog/product_new" name="product_new" template="catalog/product/list.phtml">

设置块的类型和使用的模版文件,这个文件也是产品列表页用的。“catalog/product_new” 这个就是更换了的New.php。

<action method="setCategoryId"><category_id>10</category_id></action>

setCategoryId 设置目录ID,可以是网站的根目录ID,或者某目录。

<action method="setColumnCount"><column_count>6</column_count></action>

setColumnCount 新到产品的Page产品每页产品数为6

<action method="setProductsCount"><count>0</count></action>

setProductsCount 设为0的话就是该指定目录的所有产品,否者按限定数

<block type="catalog/product_list_toolbar" name="product_list_toolbar" template="catalog/product/list/toolbar.phtml">
<block type="page/html_pager" name="product_list_toolbar_pager" />

为新到产品列表页面添加目录页的工具条和分页

<action method="setDefaultGridPerPage"><limit>12</limit></action>

setDefaultGridPerPage 配置工具栏的产品显示数

<action method="addPagerLimit"><mode>grid</mode><limit>12</limit></action>

配置分页的产品数

<action method="addColumnCountLayoutDepend"><layout>one_column</layout><count>6</count></action>

one_column 布局定为6列

<action method="setToolbarBlockName"><name>product_list_toolbar</name></action>

工具条的命名

Page的Design部分设置好后,Content部分随便设下,保存,就能查看效果了。

这篇Magento添加新产品在CMS Page 是翻译老外的,经实际操作完全可行。

Magento给新产品页面添加分页的更多相关文章

  1. 如何给magento的产品页面添加返回按钮

    如何给magento的产品页面添加返回按钮,最模板提供教程 第一步: 打开 E:\xampp\htdocs\magento\skin\frontend\default\bluescale\css\st ...

  2. magento 获得当前产品页面的产品id

    $product_id = Mage::registry('current_product')->getId();

  3. magento -- 添加新产品时状态默认为激活,库存状态默认为有库存

    添加新产品时状态默认为激活 打开文件/app/code/core/Mage/Catalog/Model/Product/Status.php,注释掉“Please Select” /** * Retr ...

  4. 在Magento产品页面的使用jqZoom

    Magento在产品页面提供了一个简单的图片放大功能,不是非常好,假设考虑使用放大镜来使用户查看产品的大图.能够考虑使用基于jQuery的插件,jqZoom便是一款优秀的放大镜插件.以下将介绍如何把j ...

  5. 在Magento System Configuration页面添加配置项

    以 Jp_Coupon 模块为例: 目标: 在 System configuration 页面添加一个 JP tab, 在JP中添加 Coupon section, 然后给 Coupon sectio ...

  6. vue 数组中嵌套的对象添加新属性--页面更新

    vue 数组中嵌套的对象添加新属性--页面更新:https://www.jianshu.com/p/8f0e5bb13735

  7. .NET生成静态页面并分页

    因为公司的产品用asp开发, 前一段时间用asp写了一个生成静态页面并分页的程序,但缘于对.net的热爱,写了这个.net下的生成静态页面并分页的程序. 主要的原理就是替换模板里的特殊字符. 1.静态 ...

  8. Adding Pagination 添加分页

    本文来自: http://www.bbsmvc.com/MVC3Framework/thread-206-1-1.html You can see from Figure 7-16 that all ...

  9. Magento如何设置产品的打折或者优惠价格

    促销是商家的必备武器,手段可以说是花样繁多.其中最有效最具吸引力的就是优惠券了.那么在Magento中如何添加优惠券呢? 修改位置:后台--促销--购物车价格规则 1.点击右上角的 添加新规则 按钮. ...

随机推荐

  1. (转载整理)SAP ERP常用T-CODE

    其实最讨厌做ERP的项目了.不过,身不由己的嘛! 网上资料加一些整理. 与客户相关  VD01 建立客户 Create customerVD02 更改客户 Change customerVD03 显示 ...

  2. js在前端获取在本地上传图片的尺寸

    var MyTest = document.getElementById("upload_img").files[0];var reader = new FileReader(); ...

  3. Mysql多表关联删除操作

    直接看Sql即可: ;

  4. System.Web.Optimization找不到引用

    在程序包管理控制程序中录入:Install-Package Microsoft.AspNet.Web.Optimization,安装即可.

  5. SQL 调试:无法启动 T-SQL 调试。未能附加到 SQL Server 进程

    将 Windows 登录帐户添加为 sysadmin 已经具有 sysadmin 特权的用户必须执行以下命令: sp_addsrvrolemember 'Domain\Name', 'sysadmin ...

  6. 类成员函数作为pthread_create函数参数

    from:http://www.cnblogs.com/shijingxiang/articles/5389294.html 近日需要将线程池封装成C++类,类名为Threadpool.在类的成员函数 ...

  7. IT公司100题-10-翻转句子中单词的顺序

    问题描述: 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变. 句子中单词以空格符隔开.为简单起见,标点符号和普通字母一样处理. 例如输入“Hello world!”,则输出“world ...

  8. 【C++】String类实现

    //string.h #include <iostream> using namespace std; class String; istream& operator>> ...

  9. Spring与Hibernate整合,实现Hibernate事务管理

    1.所需的jar包 连接池/数据库驱动包 Hibernate相关jar Spring 核心包(5个) Spring aop 包(4个) spring-orm-3.2.5.RELEASE.jar     ...

  10. Rhel6-tomcat+nginx+memcached配置文档

    理论基础: User - > web ->nginx  ->tomcat1 ->*.jsp 80          8080 ↓      -> tomcat2 html ...