提供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/

目录
相关文章
|
8月前
|
PHP
PHP - Laravel 视图模板(blade.php) 模板继承(@extends、@yield、@section)
PHP - Laravel 视图模板(blade.php) 模板继承(@extends、@yield、@section)
136 0
|
XML 数据格式
Revit两种外部接口的插件注册文件addin
Revit两种外部接口的插件注册文件addin
|
存储 安全 PHP
【Laravel】在企业级项目中使用Laravel框架中的工厂状态下的页面方法 Code Verifier以及错误处理
【Laravel】在企业级项目中使用Laravel框架中的工厂状态下的页面方法 Code Verifier以及错误处理
102 0
【Laravel】在企业级项目中使用Laravel框架中的工厂状态下的页面方法 Code Verifier以及错误处理
|
缓存 Android开发
Appium自动化(11) - 详解 Applications 类里的方法和源码解析
Appium自动化(11) - 详解 Applications 类里的方法和源码解析
159 0
Appium自动化(11) - 详解 Applications 类里的方法和源码解析
如何使用代码获得ABAP repository object不同版本的内容
Created by Jerry Wang, last modified on Dec 21, 2014
86 0
|
前端开发 IDE 开发工具
Typecho Framework 注入简介
注入是Typecho-Framewrok的重要特性。注入写起来非常优雅,在性能上也有好处(避免了函数开销)。本文简要介绍如何使用Typecho-Framework的注入。如果你不太了解Typecho-Framework,请先参考Typecho Framework简介和Typecho Framework: Hello world!两篇文章。
120 0
|
PHP
手动添加第三方vendor类,laravel自动加载
手动添加第三方vendor类,laravel自动加载
1995 0
|
文件存储 图形学
Unity3D 2018版本 Post Process 后期处理插件使用介绍
Post-processing是将全屏的滤镜和特效应用于摄像机的图像缓冲区,然后渲染在屏幕上的过程。只需要花费较少的时间进行设置,就可以大大提高产品的视觉效果。
Unity3D 2018版本 Post Process 后期处理插件使用介绍
|
Web App开发
skyline6:二次开发web工程调用网络fly文件
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bitree1/article/details/79241376 1.web工程调用网络fly文件 (1)新建一个空的web工程,并在工程中新建一个HTML页面,将页面分成左右结构,并将skyline的相关对象引入到页面中,如下图所示: 备注:上图中的各OBJECT对象从“TerraExplorer Pro”软件中的程序开发指南中复制。
1346 0