【问题标题】:Using product categories as keywords Magento使用产品类别作为关键字 Magento
【发布时间】:2014-03-30 18:29:15
【问题描述】:

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

情况如下:我正在修改产品详细信息页面上的元标记。我已经将 Product/View.php 复制到 app/code/local/ 中,到目前为止,我已经能够根据我的需要自定义页面标题和一些关键字内容。

对于关键字,我的目标是让它包含以下信息:

产品名称、Category3、Category2、Category1、SKU、公司名称

我已成功获得产品名称、SKU 和公司名称,但我的问题是至少列出产品所在的三个类别。我能得到的最多是使用以下代码的一个类别:

$categoryCollection = $product->getCategoryCollection();

        foreach ($categoryCollection as $category) {
            $topCategory = Mage::getModel('catalog/category')->load($category->getId());
            break;
        }
  $topCategory->getName();

我认为我非常接近,并且相信我的问题是如何遍历 categoryCollection,然后显示其中包含的每个类别。我尝试过的一切都失败了,我能做的最好的就是在关键字元标记中显示一个产品类别。

再次,我确信答案显然很痛苦,因此请原谅,如果是这种情况,我将不胜感激。

【问题讨论】:

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


    【解决方案1】:

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

    您对那里获取类别的逻辑也是正确的,您只获得一个类别的原因是因为“中断”,它在“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);  
    

    【讨论】:

    • Siwei:最近另一位 Magento 开发人员告诉我,如果我选择安装 Magento 更新,以这种方式修改 View.php 将是一种责任,而最好的方法是扩展班级。很想听听您对此的看法。
    • Max:你的朋友是绝对正确的,开发人员应该始终避免修改核心文件的概念再简单不过了:当升级到新版本时,所有更改都将丢失。但是扩展类可能不够理想,正确的方法是创建一个模块,使用观察者将关键字注入每个视图。这样可以保证您的更改不会受到干扰。我应该给你这个链接:stackoverflow.com/questions/7606564/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多