magento链接到产品属性中的cms页面不起作用

时间:2013-05-22 10:25:21

标签: magento url attributes

我正在尝试在产品的属性字段中添加“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> 

我做错了什么?

提前感谢您的帮助

谢谢!

1 个答案:

答案 0 :(得分:2)

PHP自己不会解析Magento EAV属性值。为了显示给用户,它们通过前端模型呈现。有关示例,请参阅eav_attribute表。

基于“我们不想显示整个网址,只显示文本链接”注释,您需要一个具有自定义前端模型的属性。我猜它是通过管理面板添加的,它不允许添加自定义前端模型。虽然添加前端模型需要脚本,但我建议首先通过脚本添加属性。

要正确安装此属性,Magento需要执行安装脚本,这是(通常)PHP代码的Magento术语,只需执行一次即可操作数据库。运行这些假设存在一个模块:

应用程序的/ etc /模块/ Your_Module.xml

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

应用程序/代码/本地/你/模块的/ 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>

应用程序/代码/本地/你/模块/ SQL / your_module_setup /安装-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();

应用程序/代码/本地/你/模块/型号/前/ 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;
    }
}