首先,熟悉magento SQL 更新机制(它在处理EAV 时有所不同——比如客户表——和常规表——比如订单)。例如,在 /YourNamespace/YourModule/sql/yourmodule_setup/mysql4-install-1.0.0.php 中创建一个包含 sql-update 脚本的模块。你应该使用类似的东西:
$installer = $this;
$installer->getConnection()->addColumn($installer->getTable('sales/order'), 'dealerid', 'decimal(12,4) NULL');
在你的 config.xml 中:
<global>
(...)
<models>
(...)
<yourmodule>
<class>Mage_Sales_Model</class>
<resourceModel>yourmodule_mysql4</resourceModel>
</yourmodule>
<yourmodule_mysql4>
<class>YourNamespace_Yourmodule_Model_Mysql4</class>
<entities>
<order><table>sales_order</table></order>
</entities>
(...)
</yourmodule_mysql4>
(...)
</models>
<resources>
<yourmodule_setup>
<setup>
<module>YourNamespace_YourModule</module>
<class>YourNamespace_YourModule_Model_Mysql4_Setup</class>
</setup>
</yourmodule_setup>
</resources>
(...)
</global>
记得创建自己的类:YourNamespace_YourModule_Model_Mysql4_Setup、YourNamespace_Yourmodule_Model_Mysql4。检查 app/code/core/Mage/Sales/ 它们应该是什么样子(那里没有什么特别需要,它们只需要从适当的核心类继承)。还要检查 app/code/core/Mage/Sales/sql 和 app/code/core/Mage/Sales/etc/config.xml。
如果您想从单页结帐中获取一个字段,您必须做几件事...我不知道您真正需要用户什么(以及将在结帐的哪一部分进行) .添加输入由模板完成(在 app/design/frontend/yourskin/default/template/checkout 中编辑适当的文件)。
要捕获正确的数据,您必须使用您自己的控制器操作(查看 app/code/core/Mage/Checkout/Controllers/OnepageController.php)重写结帐控制器以从表单中获取数据并将其存储在结帐会话。之后,您必须连接到 checkout_type_onepage_save_order_after 事件(它在 app/code/core/Mage/Checkou/Model/Type/Onepage.php 中),从您的会话中获取数据并将其放入 Order 模型中(并将其保存为课程)。它是一种标准程序,所以你不应该有问题。
您可能还会向 sales_flat_order 添加一列(订单表的结构在 1.4.x.x 中发生了更改,所以我不确定 - 您必须做一些试验)。
如果您想在 adminhtml 订单视图中查看它,则必须覆盖一些 Core/Adminhtml/Blocks/Sales/Order(可能还有模板)。
这是一个复杂的过程,所以你必须自己弄清楚一些事情。这篇文章是一个大致的想法,应该如何完成。