我正在尝试在Magento中添加一个最小的“轨道装运”系统。这就是我想要做的事情:
我想在管理员订单明细页面上设置单选按钮,以选择货件的位置(例如,尚未发货,在途中到达)。当我选择一个并按提交时,我希望客户在他/她的订单详细信息页面上查看信息。
我设法通过编辑此文件在管理员端添加单选按钮 - 应用程序/设计/ adminhtml /默认/缺省的/模板/销售/订单/图/标签/ info.phtml - 但我相信如果更新Magento它会被覆盖。客户端文件的编辑也是如此 - 应用程序/设计/前端/碱/默认/模板/销售/订单/信息/ buttons.phtml
此外,按钮实际上并没有做任何事情。我认为我需要做的是向Sales_Flat_Order添加一个列(对于具有发货状态的订单)和Sales_Flat_Order_Grid(以便管理员能够看到其当前状态)。然后,单选按钮可以某种方式更改此表中的状态,并且当加载客户页面时,它可以检索状态并显示它。
问题摘要:
任何指导,无论多么偏袒,都将不胜感激。我一直在坚持反对谷歌,以达到这个目标,但我觉得实际上没有更接近解决这个问题。
答案 0 :(得分:0)
所以,我(大部分)解决了我的问题。这就是我的所作所为:
我在phpMyAdmin的sales_flat_order表中创建了一个名为shipping_status的新列。 然后,在我为管理员方面提到的页面中,我添加了使用get方法的单选按钮。然后我使用以下代码更新了订单的shipping_status:
<?php @$a = $_GET['shipping_status'] ?>
<?php $b = $_order->getId() ?>
<?php $con = mysql_connect("localhost",login,password); ?>
<?php mysql_select_db("magentodb", $con); ?>
<?php $sql_statement = "UPDATE sales_flat_order ".
"SET shipping_status = '$a' ".
"WHERE entity_id = $b" ; ?>
<?php mysql_query($sql_statement); ?>
其中登录名和密码是我的实际数据库用户名和密码。因此,它从单选按钮获取提交的值,并将其放入具有给定订单ID(entity_id)的订单行的sales_flat_order表中。
然后,在用户方面,我在app / design / frontend / base / default / template / sales / order / info.phtml编辑了页面 添加此代码:
<?php $b = $_order->getId() ?>
<?php $con = mysql_connect("localhost",login,password); ?>
<?php mysql_select_db("magentodb", $con); ?>
<?php $sql_statement = "SELECT shipping_status ".
"FROM sales_flat_order ".
"WHERE entity_id = $b" ; ?>
<?php $result1 = mysql_query($sql_statement); ?>
<?php $result2 = mysql_fetch_assoc($result1); ?>
<?php if ($result2[shipping_status] == '0'): ?>
<strong><?php echo 'Preparing to Ship'; ?></strong>
<?php elseif ($result2[shipping_status] == "1"): ?>
<strong><?php echo 'Departed the United Kingdom'; ?></strong>
<?php elseif ($result2[shipping_status] == '2'): ?>
<strong><?php echo 'Arrived in your country'; ?></strong>
<?php elseif ($result2[shipping_status] == '3'): ?>
<strong><?php echo 'Out for Local Delivery'; ?></strong>
<?php else: ?>
<strong><?php echo 'Delivered'; ?></strong>
<?php endif; ?>
这将获取shipping_status的当前值并打印相关的状态。为了更好的衡量,我回过头来将此代码放在另一个文件中,以便管理员可以在更改之前/之后看到状态。
这是剩下的问题: 这是一个可持续的解决方案。每当更新Magento时,我相信这些文件将被没有此代码的新文件替换。因此,如果您正在寻找类似问题的解决方案,这只是一个临时修复。