编辑Magento管理员和用户订单详细信息页面

时间:2014-09-18 14:56:33

标签: php mysql magento

我正在尝试在Magento中添加一个最小的“轨道装运”系统。这就是我想要做的事情:

我想在管理员订单明细页面上设置单选按钮,以选择货件的位置(例如,尚未发货,在途中到达)。当我选择一个并按提交时,我希望客户在他/她的订单详细信息页面上查看信息。

我设法通过编辑此文件在管理员端添加单选按钮 - 应用程序/设计/ adminhtml /默认/缺省的/模板/销售/订单/图/标签/ info.phtml - 但我相信如果更新Magento它会被覆盖。客户端文件的编辑也是如此 - 应用程序/设计/前端/碱/默认/模板/销售/订单/信息/ buttons.phtml

此外,按钮实际上并没有做任何事情。我认为我需要做的是向Sales_Flat_Order添加一个列(对于具有发货状态的订单)和Sales_Flat_Order_Grid(以便管理员能够看到其当前状态)。然后,单选按钮可以某种方式更改此表中的状态,并且当加载客户页面时,它可以检索状态并显示它。

问题摘要:

  1. 如何以可持续的方式编辑订单明细页面(管理员和客户)?
  2. 我应该在phpMyAdmin中创建一个新的表列,还是必须以某种方式通过Magento完成?
  3. 我可以以某种方式使用单选按钮来更改表吗?
  4. 我可以检索该信息并将其显示在客户订单明细页面上吗?
  5. 任何指导,无论多么偏袒,都将不胜感激。我一直在坚持反对谷歌,以达到这个目标,但我觉得实际上没有更接近解决这个问题。

1 个答案:

答案 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时,我相信这些文件将被没有此代码的新文件替换。因此,如果您正在寻找类似问题的解决方案,这只是一个临时修复。