使用产品类别作为关键字Magento

时间:2014-03-30 18:29:15

标签: php mysql magento zend-framework magento-1.7

我问这个问题充分意识到我所寻求的答案非常明显,可能就在我面前。不幸的是,我看不到它,所以我需要一些帮助。是的,我已经看到了这一点: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然后显示其中包含的每个类别。我尝试过的所有内容都失败了,我能做的最好的事情就是在关键字元标记中显示一个产品类别。

同样,我确定答案很明显,所以请原谅,如果是这样的话,我将非常感谢您的帮助。

1 个答案:

答案 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);