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

Php 使用产品类别作为关键字Magento,php,mysql,magento,zend-framework,magento-1.7,Php,Mysql,Magento,Zend Framework,Magento 1.7,我问这个问题时充分意识到,我所寻求的答案非常明显,可能就在我面前。不幸的是,我看不到它,所以我需要一些帮助。是的,我已经看到了这一点:虽然它适用于我的问题,但它并没有说明如何实现我的目标 情况是这样的:我正在修改产品详细信息页面上的元标记。我已经将Product/View.php复制到app/code/local/中,到目前为止,我已经能够根据需要自定义页面标题和一些关键字内容 对于关键字,我的目标是使其包含以下信息: 产品名称、类别3、类别2、类别1、SKU、公司名称 我已经成功地获得了产品名

我问这个问题时充分意识到,我所寻求的答案非常明显,可能就在我面前。不幸的是,我看不到它,所以我需要一些帮助。是的,我已经看到了这一点:虽然它适用于我的问题,但它并没有说明如何实现我的目标

情况是这样的:我正在修改产品详细信息页面上的元标记。我已经将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,然后显示其中包含的每个类别。我尝试过的一切都失败了,我能做的最好的事情就是在关键字meta标签中显示一个产品类别


同样,我确信答案显然是痛苦的,因此如果是这种情况,请原谅,我将非常感谢您的帮助。

您已经获得View.php文件,这很好,为了使此Q/A对其他人有用,我还将列出您可以从中获取此文件的文件夹(Magento 1.7):/app/code/core/Mage/Catalog/Block/Product/View.php

您对获取category的逻辑也是正确的,您只获取一个category的原因是因为“break”,它在第一次运行之后立即结束“foreach”的执行。见:

让我们稍微修改一下代码:

获取所有类别:

$categoryCollection = $product->getCategoryCollection();

  foreach ($categoryCollection as $category) {
        $topCategory = Mage::getModel('catalog/category')->load($category->getId());
        $keyword .= ' '.$topCategory->getName();
    }
  $headBlock->setKeywords($keyword);  
$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);  
获取3个类别:

$categoryCollection = $product->getCategoryCollection();

  foreach ($categoryCollection as $category) {
        $topCategory = Mage::getModel('catalog/category')->load($category->getId());
        $keyword .= ' '.$topCategory->getName();
    }
  $headBlock->setKeywords($keyword);  
$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);  

Siwei:最近另一位Magento开发人员告诉我,如果我选择安装Magento更新,那么以这种方式修改View.php将是一种负担,而且最好的方法是扩展类。麦克斯:你的朋友是绝对正确的,开发人员应该始终避免修改核心文件,这一点再简单不过了:升级到新版本时,所有更改都将丢失。但是扩展类可能不够理想,正确的方法是创建一个模块,使用observer在每个视图中插入关键字。这将保证您的更改不会受到干扰。我应该给你这个链接: