提供Magento上一个和下一个产品的简单帮助(Helper)类

添加以下这个Helper类:

<?php
/**
 * INCHOO's FREE EXTENSION DISCLAIMER
 *
 * Please do not edit or add to this file if you wish to upgrade Magento
 * or this extension to newer versions in the future.
 *
 * Inchoo developers (Inchooer's) give their best to conform to
 * "non-obtrusive, best Magento practices" style of coding.
 * However, Inchoo does not guarantee functional accuracy of specific
 * extension behavior. Additionally we take no responsibility for any
 * possible issue(s) resulting from extension usage.
 *
 * We reserve the full right not to provide any kind of support for our free extensions.
 *
 * You are encouraged to report a bug, if you spot any,
 * via sending an email to bugreport@inchoo.net. However we do not guaranty
 * fix will be released in any reasonable time, if ever,
 * or that it will actually fix any issue resulting from it.
 *
 * Thank you for your understanding.
 */

/**
 * @category Inchoo
 * @package Inchoo_Catalog
 * @author Vedran Subotic <vedran@inchoo.net>
 * @copyright Inchoo <http://inchoo.net>
 * @license http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
 */
class Inchoo_Catalog_Helper_Data extends Mage_Core_Helper_Abstract
{
    public function getPreviousProduct()
    {
        $prodId = Mage::registry('current_product')->getId();

        $catArray = Mage::registry('current_category');

        if($catArray){
            $catArray = $catArray->getProductsPosition();
            $keys = array_flip(array_keys($catArray));
            $values = array_keys($catArray);

            $productId = $values[$keys[$prodId]-1];

            $product = Mage::getModel('catalog/product');

            if($productId){
                $product->load($productId);
                return $product->getProductUrl();
            }
            return false;
        }

        return false;

    }

    public function getNextProduct()
    {
        $prodId = Mage::registry('current_product')->getId();

        $catArray = Mage::registry('current_category');

        if($catArray){
            $catArray = $catArray->getProductsPosition();
            $keys = array_flip(array_keys($catArray));
            $values = array_keys($catArray);

            $productId = $values[$keys[$prodId]+1];

            $product = Mage::getModel('catalog/product');

            if($productId){
                $product->load($productId);
                return $product->getProductUrl();
            }
            return false;
        }

        return false;
    }

}

在产品页的模板文件中直接调用这个类里的函数:

<?php $_prev = $this->helper('inchoo_catalog')->getPreviousProduct(); ?>
<?php $_next = $this->helper('inchoo_catalog')->getNextProduct(); ?>

<?php if($_prev): ?><a class="product-prev" href="<?php echo $_prev;?>"><?php echo $this->__('< Previous')?></a><?php endif; ?>
<?php if($_next): ?><a class="product-next" href="<?php echo $_next;?>"><?php echo $this->__('Next >')?></a><?php endif; ?>

这样就很简单的在产品详细页面添加了指向上一个产品和下一个产品的链接。

PS:我自己之前写过一个上一个和下一个产品链接的Block:http://blog.csdn.net/shuishui8310/article/details/6136578,这个是根据产品ID的顺序来取的,合理性不如inchoo的根据产品在当前分类下的位置(Position)来取,所以推荐本篇文章提供的方式来实现上一个和下一个产品,有兴趣的可以对比下代码。

PS:inchoo的代码我还没测试过,但看了下写的很合理,所以推荐下

转自:http://inchoo.net/ecommerce/magento/simple-helper-class-for-previous-next-products-in-magento/

时间: 2024-12-22 16:25:28

提供Magento上一个和下一个产品的简单帮助(Helper)类的相关文章

Drupal 7 实现上一篇下一篇的简单方法

在模板/sites/all/themes/liuzhiliang.com/template.php文件上加个函数  代码如下 复制代码 /**  * myNodePrevNext  * 文章上一篇下一篇  * $nid - 节点id  * $type - 节点类型  */ function myNodePrevNext($nid, $type) {     $output = '<ul>';     $sql_previous = "SELECT n.nid, n.title, ur

电子商务:线上与线下冲突解决之道

2010年4月22日工业和信息化部发布的数据显示,今年一季度,我国互联网网民新增2000万人,网民总数达到4.04亿人.统计显示,目前,互联网已成为人们生活.工作.学习不可或缺的工具,正对社会生活的方方面面产生深刻影响.互联网产业持续发展.据估算,1-3月份电子商务.网络广告.网络游戏.搜索引擎等市场规模同比增长均超过20%,成为互联网产业主要增长领域. 新渠道新优势:电商发展新动力 从网络用户的角度来说,随着网民规模的扩大,而且随着网民的日益成熟,网络对于网民的价值正在由 "娱乐平台"

急!!关于上一张下一张图片切换问题

问题描述 各位大虾,有个问题想请教你们,我把图片的所有路径都写到一个字段里面,然后我想用做上一张,下一张切换怎么做,还有旁边已经有做了小图,点击就有大图出现的,现在我不知道怎么写,帮忙一下,谢谢了 解决方案 解决方案二:你这样的显示,用swf+xml就可以实现示例:解决方案三:我现在还很菜,不会的,能不能做点击图片就跳到下一张,上一张这样的呢解决方案四:你作的应该是动态页面的前台,或者用后台程序生成的静态页面前台.这样的话,在后台程序里写就行了.当前的ID你都知道,把上一个和下一个的ID取来放上

下一个被颠覆的产品:路由器

极路由的出现能否改变整个路由器行业?专访极路由创始人王楚云如果说iPhone颠覆了手机,微博颠覆了新闻,微信颠覆了短信, 那么下一个被颠覆的将是什么?新浪科技 张楠"如果让我猜一下,下一个被颠覆的一定是路由器."极路由(hiwifi.com)创始人王楚云在接受新浪科技采访前,正在和工程师泡在一起."路由器在芯片厂商的主导中已经几乎十年未有重大革新,到了改变的时候了."极路由与一般的路由器非常不同,除了设计和外观之外,最突出的特点是内置嵌入式操作系统,实现了插件式的功

Google硬件布局:永远寻找“下一个”产品

从国内智能硬件市场来看,目前依然是一种"现象级"的风靡,然而已经撬动了产业链上下游的各个环节,智能硬件市场的崛起必然是得益于这种协同效应.从芯片解决方案的革命.智能产品设计.交互设计再到硬件制造.销售.用户体验,各个行业的从业者都在前所未有的投身于一个看起来崭新.市场前景可被估量的事业.钛媒体试图通过[智能硬件]系列专题,引发更多的思考和讨论,并为以下问题找到答案:互联网巨头在进入平台期之后,如何依靠智能硬件获取下一个竞争力? 谷歌无疑是智能硬件领域的先行者,以下是钛媒体编辑李小年的梳

58同城陈小华:O2O是一个整体 将线上和线下连接在一起

O2O如何实现流量变现?对于企业来说,O2O是赚钱的大好机会,但是对用户来说,O2O确实正在改变着人们的生活,那么58同城如何逐渐开展本地服务O2O业务的, 58同城陈小华今天在清科集团主办的"第四届中国移动互联网投资大会"上分享58同城的O2O变现之路. 以下为演讲实录: 谢谢各位嘉宾和朋友们,我是叫陈小华,我来参加今天这个会,可能是第一次来参加投资的会议,但是我确实现在的身份是在58,投资业务确实是我负责的,所以我参加这个会议还是一个完全的新人. 给我的题目叫谈一谈58同城对O2O

NLP成下一个风口?「来也」完成千万美金 B 轮融资,推出战略级AI产品“吾来”

12月21日,专注打造智能助理平台的人工智能公司助理来也宣布完成千万美元B轮融资,并推出针对企业客户的战略级新产品「吾来」,提供行业智能助理的全套解决方案.本轮投资由双湖资本领投,早期投资方光速中国和红杉资本继续跟投. 随着B轮融资一并发布的是「来也」面向垂直行业.To B的智能服务解决方案「吾来」. 助理来也联合创始人兼CEO汪冠春博士表示:"助理来也成立两年来,一直在努力推进智能助理的技术研发和产品落地,新一轮融资后会继续加大在基础技术.产品研发.市场开拓和人才招募上的投入,并在AI和产业结

从线上到线下,一个小团队创业两年的渠道转型

中介交易 SEO诊断 淘宝客 云主机 技术大厅 文|方阿建,葡萄信息联合创始人 在年终,有幸收到好基友老缅的邀请,让我写写团队转型方面的东西跟大家分享.其实对于创业小团队,基本都处于快速探索阶段,所以也就不存在所谓的转型.但是在创业两年多的过程中,我们推广渠道从线上转到线下,再扩展到平板和海外,这其中的一些思路变化,可以跟大家分享一下. 熟悉我们团队的朋友应该知道,2012年创业之初我们做的产品叫"葡萄社交助手",因为2012年算是移动互联网的社交年,微博.微信风头正劲头,唱吧.陌陌.

微信最后一个宝藏—朋友圈也要上广告,下一个社交平台是什么?

微信最后一个宝藏-朋友圈终于要上广告了.虽然开始是创意较好的CPT品牌广告,但之后还是会向CPC效果广告过渡. 微信朋友圈广告的加入,将使得短期业绩有大幅上升.腾讯广点通产品,在移动端的展示次数应该可以直接翻倍.而带来的广告收益,则同时受益于流量的上升,和CPC的上升(因为竞价更加充分).我认为腾讯公司的互联网广告业务,2015年二季度或三季度达到40亿是大概率事件(2014年三季度为24亿). 但这只是短多.长空则是因为,我判断随着朋友圈信息流广告的加入,在一到两年内会出现替代性的社交平台.其