0

製品の属性フィールドに「a href」/リンクを追加しようとしています。ただし、私が使用している方法は機能していません。CMS ページのコンテンツでは機能しますが。商品を閲覧するとリンク付きの属性が表示されるが、実際のURLが正しく生成されていないようです(404エラー)

私は次のことを試しました:

1. <a href="<?php echo Mage::getBaseUrl(); ?>test-page">Test link 1</a>
2. <a href="{{store url='test-page'}}">Test link 2</a> 
3. <a href="index.php/test-page">Test link 3</a> 

私は何を間違っていますか?

あなたの助けは事前に感謝されます

ありがとうございました!

4

1 に答える 1

2

Magento EAV 属性の値は、PHP によって独自に解析されることはありません。ユーザーに表示するために、フロントエンド モデルを介してレンダリングされます。eav_attribute例については、表を参照してください。

「URL全体を表示するのではなく、テキストリンクのみを表示したい」というコメントに基づいて、カスタムフロントエンドモデルの属性が必要です。カスタムフロントエンドモデルを追加できない管理パネルから追加されたと思います。フロントエンド モデルを追加するにはスクリプトが必要ですが、最初にスクリプトを使用して属性を追加することをお勧めします。

この属性を適切にインストールするには、Magento はセットアップ スクリプトを実行する必要があります。これは、(通常) PHP コードを表す Magento 用語であり、データベースを操作する機能を備えた 1 回だけ実行されます。これらを実行すると、モジュールが存在することが前提になります。

app/etc/modules/Your_Module.xml :

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Your_Module>
            <active>true</active>
            <codePool>local</codePool>
        </Your_Module>
    </modules>
</config>

app/code/local/Your/Module/etc/config.xml :

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Your_Module>
            <version>1.0.0.0</version>
        </Your_Module>
    </modules>
    <global>
        <models>
            <your_module>
                <class>Your_Module_Model</class>
            </your_module>
        </models>
        <resources>
            <your_module_setup>
                <setup>
                    <module>Your_Module</module>
                </setup>
            </your_module_setup>
        </resources>
    </global>
</config>

app/code/local/Your/Module/sql/your_module_setup/install-1.0.0.0.php :

<?php

$installer = Mage::getResourceModel('catalog/setup','catalog_setup');
/* @var $installer Mage_Catalog_Model_Resource_Setup */

$installer->startSteup();

$installer->addAttribute(
    'catalog_product',
    'unique_attr_code',
    array(
        'label'     => 'Link to Product',
        'required'  => 'false',             //or true if appropriate
        'group'     => 'General',           //Adds to all sets
        'frontend'  => 'your_module/frontend_url'
    )
);

$installer->endSetup();

app/code/local/Your/Module/Model/Frontend/Url.php :

class Your_Module_Model_Frontend_Url
    extends Mage_Eav_Model_Entity_Attribute_Frontend_Abstract
{
    public function getUrl($object)
    {
        $url = false;
        if ($path = $object->getData($this->getAttribute()->getAttributeCode())) {
            $url = Mage::getUrl('path');
        }
        return $url;
    }
}
于 2013-05-22T12:27:05.207 に答える