1

在 magento 的产品页面上,我想在元关键字标签中获取产品名称、其类别名称和子类别名称。

请帮忙!!

提前致谢。

4

3 回答 3

4

由于产品已经附加了 MetaKeyword 值,您可以使用观察者不显眼地扩展该值。此方法不涉及扩展核心类

尝试这个:

/app/code/local/YourCompany/YourModule/etc/config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <YourCompany_YourModule>
            <version>1.0.0</version>
        </YourCompany_YourModule>
    </modules>
    <global>
        <models>
            <YourCompany_YourModule>
                <class>YourCompany_YourModule_Model</class>
            </YourCompany_YourModule>
        </models>
    </global>
    <frontend>
        <events>
            <catalog_controller_product_view>
                <observers>
                    <YourCompany_YourModule>
                        <class>YourCompany_YourModule/Observer</class>
                        <method>productView</method>
                    </YourCompany_YourModule>
                </observers>
            </catalog_controller_product_view>
        </events>
    </frontend>
</config>

/app/code/local/YourCompany/YourModule/Model/Observer.php

<?php
class YourCompany_YourModule_Model_Observer
{

    public function productView(Varien_Event_Observer $observer)
    {
        $product = $observer->getEvent()->getProduct();
        /* @var $product Mage_Catalog_Model_Product */

        if ($product) {
            $keywords = $product->getMetaKeyword();

            // Add the product name
            $keywords = ' ' . $product->getName();

            // Add the category name
            $currentCategory = Mage::registry('current_category');
            if ($currentCategory && $currentCategory instanceof Mage_Catalog_Model_Category) {
                $keywords = ' ' . $currentCategory->getName();
            }

            $product->setMetaKeyword($keywords);
        }
    }

}
于 2011-09-30T16:32:31.917 回答
1

您必须重写 Mage_Catalog_Block_Product_View 类,尤其是 __preparelayout() 方法。

只需在您将覆盖的 _prepareLayout 方法中添加以下代码:

protected function _prepareLayout()
{
    $currentCategory = Mage::registry('current_category'); // For accessing current category information
    $product = $this->getProduct();

    if ($headBlock = $this->getLayout()->getBlock('head')) {
      $headBlock->setTitle("Whatever you want here");   
      $product->setMetaKeyword("whatever, keywords, you, want, here");   
      $product->setMetaDescription("Whatever description you want here);   
    }

    return parent::_prepareLayout();
}

按照上面描述的方式设置元关键字和元描述很重要,否则它将被父类再次覆盖。

问候,肯尼

于 2011-09-30T12:43:00.273 回答
0

你是说产品详情页吗?如果是意味着非常简单

转到您的特定产品页面,应该有“元信息”选项卡。您可以在此处添加

Meta Title, Meta Keywords, Meta Description
于 2011-09-30T10:57:28.003 回答