我问这个问题充分意识到我所寻求的答案非常明显,可能就在我面前。不幸的是,我看不到它,所以我需要一些帮助。是的,我已经看到了这一点:https://stackoverflow.com/a/11708444/731596虽然它适用于我的问题,但它并没有证明如何实现我的目标。
以下情况:我正在修改产品详细信息页面上的元标记。我已将Product / View.php复制到app / code / local /中,到目前为止,我已经能够根据自己的需要自定义页面标题和一些关键字内容。
对于关键字,我的目标是让它包含以下信息:
产品名称,类别3,类别2,类别1,SKU,公司名称
我成功获得了产品名称,SKU和公司名称,但我的问题是列出了产品所在的至少三个类别。我能够获得的最多是使用以下代码的一个类别:
$categoryCollection = $product->getCategoryCollection();
foreach ($categoryCollection as $category) {
$topCategory = Mage::getModel('catalog/category')->load($category->getId());
break;
}
$topCategory->getName();
我认为我非常接近并且认为我的问题是如何遍历categoryCollection然后显示其中包含的每个类别。我尝试过的所有内容都失败了,我能做的最好的事情就是在关键字元标记中显示一个产品类别。
同样,我确定答案很明显,所以请原谅,如果是这样的话,我将非常感谢您的帮助。
答案 0 :(得分:1)
你已经获得了View.php文件,这很好,为了让这个Q / A对其他人有用,我还会列出你可以从中获取此文件的文件夹(Magento 1.7):/ app /code/core/Mage/Catalog/Block/Product/View.php
你对获得类别的逻辑也是正确的,你只得到一个类别的原因是因为" break&#34 ;,它结束了" foreach"的执行。在第一次运行后。请参阅:http://www.php.net/manual/en/control-structures.break.php
让我们稍微更改您的代码:
获取所有类别
$categoryCollection = $product->getCategoryCollection();
foreach ($categoryCollection as $category) {
$topCategory = Mage::getModel('catalog/category')->load($category->getId());
$keyword .= ' '.$topCategory->getName();
}
$headBlock->setKeywords($keyword);
获取3个类别:
$i = 0;
$categoryCollection = $product->getCategoryCollection();
foreach ($categoryCollection as $category) {
if($i++ == 3){break;}
$topCategory = Mage::getModel('catalog/category')->load($category->getId());
$keyword .= ' '.$topCategory->getName();
}
$headBlock->setKeywords($keyword);