6

<title>商品ページのタグに追加したいカスタム属性が 2 つあります。それらは「ブランド」と「サブタイトル」です。

私のページのタイトルは次のようになります。

$brand." ".$productname." ".$subtitle;

どうすればこれを達成できますか?

助けていただければ幸いです。

4

5 に答える 5

22

あなたの質問から、製品のメタ タイトルの変更について言及していると思います。

次の 3 つのオプションがあります。

  1. 各製品に目を通し、各製品のメタ タイトルを個別に手動で更新 (またはスプレッドシートを使用してインポート) します。これらの値は、製品を編集するときに管理エリアで使用できます。
  2. Mage_Catalog_Block_Product_View を書き直し、このタグが生成されている _prepareLayout() メソッドをオーバーライドします。
  3. オブザーバーを使用して、catalog_controller_product_view イベントにフックします。

あなたの決定は、実際にはオプション 2 と 3 の間で決まります (どちらも、達成するためにカスタム モジュールを作成する必要があります)。

私は、Magento のコア機能を拡張するときは常にできるだけ目立たないようにしています。そのため、ここではオプション 3 を選択します。完全な例については、以下のコードを参照してください。

app/etc/modules/Yourcompany_Yourmodule.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Yourcompany_Yourmodule>
            <active>true</active>
            <codePool>local</codePool>
        </Yourcompany_Yourmodule>
    </modules>
</config>

アプリ/コード/ローカル/あなたの会社/あなたのモジュール/etc/config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Yourcompany_Yourmodule>
            <version>1.0.0</version>
        </Yourcompany_Yourmodule>
    </modules>
    <global>
        <models>
            <yourmodule>
                <class>Yourcompany_Yourmodule_Model</class>
            </yourmodule>
        </models>
    </global>
    <frontend>
        <events>
            <catalog_controller_product_view>
                <observers>
                    <yourmodule>
                        <class>Yourcompany_Yourmodule_Model_Observer</class>
                        <method>catalog_controller_product_view</method>
                    </yourmodule>
                </observers>
            </catalog_controller_product_view>
        </events>
    </frontend>
</config>

アプリ/コード/ローカル/あなたの会社/あなたのモジュール/モデル/Observer.php

<?php

class Yourcompany_Yourmodule_Model_Observer
{
    /**
     * Change product meta title on product view
     *
     * @pram Varien_Event_Observer $observer
     * @return Yourcompany_Yourmodule_Model_Observer
     */
    public function catalog_controller_product_view(Varien_Event_Observer $observer)
    {
        if ($product = $observer->getEvent()->getProduct()) {
            $title = $product->getData('brand') . ' ' . $product->getData('name') . ' ' . $product->getData('sub_title');
            $product->setMetaTitle($title);
        }
        return $this;
    }
}
于 2012-06-03T11:43:07.473 に答える
1

これはドリューハンターの答えへの追加です

magento にはタイトルにカテゴリ名が含まれているため、適切な解決策は次のようになります。

class Yourcompany_Yourmodule_Model_Observer
{
    /**
     * Change product meta title on product view
     *
     * @pram Varien_Event_Observer $observer
     * @return Yourcompany_Yourmodule_Model_Observer
     */
    public function catalog_controller_product_view(Varien_Event_Observer $observer)
    {
        if ($product = $observer->getEvent()->getProduct()) {
            if ($category) {
                $title = $brand . ' ' . $product->getData('name') . ' - ' . $product->getData('category')->getData('name');
            } else {
                $title = $brand . ' ' . $product->getData('name');
            }
            $product->setMetaTitle($title);
        }
        return $this;
    }
}
于 2012-06-16T11:34:44.373 に答える
1

カタログ閲覧ページで商品タイトルのみ変更したい場合

app/design/frontend/default/{your theme Folder}/template/page/html/head.phtml でできます

<?php if ($_product = Mage::registry('current_product')) { ?>
    <title><?php echo $_product->getData('xyz') . ' ' . $_product->getName(); ?></title>
<?php }else{ ?>
     <title><?php echo $this->getTitle() ?></title>
<?php } ?>

属性名と値の取得を参照してくださいMagento

于 2013-01-28T21:12:32.493 に答える