2

我目前正在制作一个模块,以便用户在结帐页面上看到类似:“购买产品 X 的人还购买了 Y、Z 和 T”。

我做了一个 cronjob 来计算每个产品的相关产品,并在安装脚本中为产品添加了一个属性。

我决定(为了简单起见) - 存储最相关的 5 个产品,所以我想存储类似:123-3-5543-1290-9911. 但我不希望管理员在任何地方看到这个,我尝试了以下方法:

$setup->addAttribute('catalog_product', $attrCode, array(
    // more stuff
    'type' => 'hidden',
    'input' => 'text',
    'visible' => 0,
    // more stuff
));

我看了这里: http: //blog.chapagain.com.np/magento-adding-attribute-from-mysql-setup-file/我发现了一些有趣的东西,但不是如何完全隐藏这个字段。

另一种方法是创建我自己的表,但这似乎是一个稍微优雅的解决方案。

你怎么看?是创建自己的表更好,还是添加属性并隐藏它?

谢谢

4

2 回答 2

6

将目录属性的 'is_visible' 属性设置为 0 会将它们从后端的管理表单中隐藏起来,从这段代码中可以看出(Mage_Adminhtml_Block_Widget_Form::_setFieldset()):

 protected function _setFieldset($attributes, $fieldset, $exclude=array())
    {
        $this->_addElementTypes($fieldset);
        foreach ($attributes as $attribute) {
            /* @var $attribute Mage_Eav_Model_Entity_Attribute */
            if (!$attribute || ($attribute->hasIsVisible() && !$attribute->getIsVisible())) {
                continue;
            }

所以执行

 $setup->updateAttribute('catalog_product', $attrCode, 'is_visible', '0');
于 2013-01-25T16:19:22.500 回答
0

我是这样解决的。

转到目录>>属性>>管理属性>>添加新属性

然后,保存。然后,转到数据库并运行此查询:

SELECT * FROM eav_attribute WHERE attribute_code ='attribute_code';

将列frontend_input的值更改为隐藏,然后保存。

希望能帮助到你。

于 2016-02-03T17:17:43.310 回答