我想在产品页面上显示类别链接。
所以我这样做:
<?php
$_product = $this->getProduct();
$category_model = Mage::getModel('catalog/category');
$category_helper = Mage::helper('catalog/category');
$categories_ids = $_product->getCategoryIds();
?>
<?php if (count($categories_ids > 0)): ?>
<ul class="categorias-principais">
<?php foreach ($categories_ids as $cat_id): ?>
<?php $category = $category_model->load($cat_id) ?>
<?php if(!$category->getIsActive()) continue; ?>
<li>
<a href="<?php echo $category->getUrl(); ?>">
<?php echo $category->getName() ?>
</a>
</li>
<?php endforeach ?>
</ul>
<?php endif ?>
我得到正确的名字,但是网址总是等于第一个,对于其他类别,为什么? getName,getUrlPath,all都返回正确的值,但不是getUrl()
我也尝试过使用帮助器:
<a href="<?php echo $category_helper->getCategoryUrl($category) ?>">
<?php echo $category->getName() ?>
</a>
但问题仍然存在
这是生成的html
<ul class="categorias-principais">
<li>
<a href="http://localhost:3000/index.php/maquiagem.html">
Maquiagem
</a>
</li>
<li>
<a href="http://localhost:3000/index.php/maquiagem.html">
Corpo e Banho
</a>
</li>
<li>
<a href="http://localhost:3000/index.php/maquiagem.html">
Sub segundo
</a>
</li>
<li>
<a href="http://localhost:3000/index.php/maquiagem.html">
Unhas
</a>
</li>
</ul>
编辑:
当我使用以下方式更改我的收藏时:
$categories = $_product->getCategoryCollection();
而不是获取类别ID并使用模型加载类别,我可以成功使用getUrl(),但是getName()和getIsActive()将不再起作用,所以我混合了两个实例类型,它是非常蹩脚的,但如果没有人能给我一个更好的答案,我会把它作为一个发布。
新代码正在运行:
<?php
$_product = $this->getProduct();
$category_model = Mage::getModel('catalog/category');
$category_helper = Mage::helper('catalog/category');
$categories = $_product->getCategoryCollection();
?>
<?php if (count($categories) > 0): ?>
<ul class="categorias-principais">
<?php foreach ($categories as $_category): ?>
<?php $_category_element = $category_model->load($_category->getId()) ?>
<?php if(!$_category_element->getIsActive() || $_category->getLevel() != 2) continue; ?>
<li>
<a href="<?php echo $_category->getUrl() ?>">
<?php echo $_category_element->getName() ?>
</a>
</li>
<?php endforeach ?>
</ul>
<?php endif ?>
答案 0 :(得分:0)
使用以下代码,将参数作为类别检查,如$ _cat-&gt; getUrl($ _ cat);你的第一个代码中没有包含参数。
$product = Mage::getModel('catalog/product')->load($productId);
$cats = $product->getCategoryIds();
foreach ($cats as $category_id) {
$_cat = Mage::getModel('catalog/category')->load($category_id) ;
echo $_cat->getUrl($_cat);
echo $_cat->getName();
}