Magento:自定义属性选项的新值字段

时间:2013-11-19 08:21:49

标签: magento options custom-attributes

我想在管理员的管理属性选项菜单中的属性选项中添加自定义字段。与admin中位置列旁边的列一样。我附上了一张图片。

我做了什么......(Magento 1.8)

  1. eav_attribute_option提交后,在sort_order表中创建了一个名为 value 的新字段。

  2. 更改了magento\app\design\adminhtml\default\default\template\eav\attribute\options.phtml此文件,以显示位置列旁边的列。

  3. 更改了此文件getOptionValues()中的magento\app\code\core\Mage\Eav\Block\Adminhtml\Attribute\Edit\Options\Abstract.php方法,以便从数据库中获取自定义列的数据,并在管理员端显示。它以admin格式显示db的默认值。

    但是当我想从管理面板保存时,数据不会保存在db中。

  4. 我一直在尝试找到实际处理写入数据库的模型或控制器,以确保我的新字段也能保存。

    任何帮助都将不胜感激。

    (我发布了一张图片让你明白,但我不能,因为我需要10点才能做到。)

1 个答案:

答案 0 :(得分:1)

知道了!

更新:Mage / Eav / Model / Resource / Entity / Attribute.php

函数中的

:_saveOption(Mage_Core_Model_Abstract $ object)

改变:

$sortOrder = !empty($option[’order’][$optionId]) ? $option[’order’][$optionId] : 0; 
if (!$intOptionId) { 
$data = array( 
‘attribute_id’ => $object->getId(), 
‘sort_order’ => $sortOrder, 
); 
$adapter->insert($optionTable, $data); 
$intOptionId = $adapter->lastInsertId($optionTable); 
} else { 
$data = array(’sort_order’ => $sortOrder); 
$where = array(’option_id =?’ => $intOptionId); 
$adapter->update($optionTable, $data, $where); 
}

为此:

$sortOrder = !empty($option[’order’][$optionId]) ? $option[’order’][$optionId] : 0; 
$yourAttribute = (isset($option[’your_attr_field’]) && !empty($option[’your_attr_field’][$optionId])) ? $option[’your_attr_field’][$optionId] : ‘’; 
if (!$intOptionId) { 
$data = array( 
‘attribute_id’ => $object->getId(), 
‘sort_order’ => $sortOrder, 
‘your_attr_field’ => $yourAttribute 
); 
$adapter->insert($optionTable, $data); 
$intOptionId = $adapter->lastInsertId($optionTable); 
} else { 
$data = array(’sort_order’ => $sortOrder, ‘your_attr_field’ => $yourAttribute); 
$where = array(’option_id =?’ => $intOptionId); 
$adapter->update($optionTable, $data, $where); 
}

我可以使用一些帮助来进行所有这些改变'Magento方式'