在产品详细页面的产看上一个,下一个产品的代码!

本文介绍了一个Magento系统的实现方案,用于展示产品的前后导航链接及返回分类页面的链接。通过获取当前产品和分类信息,实现产品间的前后切换,并提供返回所属分类的功能。

<!--for next & prev link-->

<?php // prev- / next-link...

//不是很明白为什么要赋值:$_helper!!

$_helper = $this->helper('catalog/output');

//Data[]里面的数据--通过$this->get();

$_product = $this->getProduct();

$prev_url = $next_url = $url = $_product->getProductUrl();

//$this->helper('catalog/data')->getCategory():得到当前的category对象。如果存在,赋值。如果不存在通过另外一种方式取得

if ($this->helper('catalog/data')->getCategory()) {

$category = $this->helper('catalog/data')->getCategory();

} else {

//先得到当前的产品,然后得到categoryids(“分类”数组),这里只用第一个($_ccats[0]),然后通过Mage::getModel()->load()方法得到实例化的“分类对象”

$_ccats = $this->helper('catalog/data')->getProduct()->getCategoryIds();

$category = Mage::getModel('catalog/category')->load($_ccats[0]);

}

$children = $category->getProductCollection();

//不是很明白

$_count = is_array($children) ? count($children) : $children->count();

if ($_count) {

foreach ($children as $product) {

//得到所有的产品的ID。存放到数组$plist.

$plist[] = $product->getId();

}

/**

* Determine the previous/next link and link to current category

*/

$current_pid = $this->helper('catalog/data')->getProduct()->getId();

//array_search()函数的作用是在数组中查找一个值所对应的键。

$curpos = array_search($current_pid, $plist);

// get link for prev product

//

$previd = isset($plist[$curpos+1])? $plist[$curpos+1] : $current_pid;

$product = Mage::getModel('catalog/product')->load($previd);

$prevpos = $curpos;

while (!$product->isVisibleInCatalog()) {

$prevpos += 1;

//如果存在下一个,则等于下一个,没有则等于自己的

$nextid = isset($plist[$prevpos])? $plist[$prevpos] : $current_pid;

$product = Mage::getModel('catalog/product')->load($nextid);

}

$prev_url = $product->getProductUrl();

// get link for next product

$nextid = isset($plist[$curpos-1])? $plist[$curpos-1] : $current_pid;

$product = Mage::getModel('catalog/product')->load($nextid);

$nextpos = $curpos;

while (!$product->isVisibleInCatalog()) {

$nextpos -= 1;

//

$nextid = isset($plist[$nextpos])? $plist[$nextpos] : $current_pid;

$product = Mage::getModel('catalog/product')->load($nextid);

}

$next_url = $product->getProductUrl();

}

?>

<div class="prevNextcategoriesNavigation">

<div class="for-next">

<?php if ($url != $prev_url):?>

<a class="next-product" href="<?php echo $prev_url; ?>">

<?php echo $this->__('<- Prev') ?>

</a>

<?php endif; ?>

</div>

<div class="for-categories">

<ul>

<li> <?php echo $this->__('Back to Categories:') ?></li>

<?php $categories = $_product->getCategoryIds(); ?>

<?php foreach($categories as $k => $_category_id): ?>

<?php $_category = Mage::getModel('catalog/category')->load($_category_id) ?>

<li><a class="back-to-catalog" href="<?php echo $_category->getUrl() ?>"><?php echo $_category->getName() ?></a></li>

<?php endforeach; ?>

</ul>

</div>

<div class="for-prev">

<?php if ($url != $next_url):?>

<a class="prev-product" href="<?php echo $next_url; ?>">

<?php echo $this->__('next ->') ?>

</a>

<?php endif; ?>

</div>

</div>

<!--for next & prev link-->

//得到当前的分类下的所有产品

$productCollection = $this->helper('catalog/data')->getCategory()->getProductCollection();

//得到当前产品对应的所有分类

$category =$this->helper('catalog/data')->getProduct()->getCategoryIds();

补充:

1、获取店铺$store = Mage::app()->getStore();

你可以print一下$store,它是Mage_Core_Model_Store对象,获取数据可以通过下面代码获取

$store = Mage::app()->getStore()->getData();

2、获取当前店铺配置的配置$value = Mage::app()->getStore()->getConfig($path)

先得到productId数组,然后再利用这个数组进行key的加减实现上一个,下一个产品,

$url = $_product->getProductUrl();

通过url与$prev_url ,$next_url是否相等来判断,如果相等,则没有下一个产品,活着没有上一个产品!!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值