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

标签 php mysql magento

我正在尝试在 Magento 中添加一个最小的“跟踪发货”系统。这就是我正在尝试做的事情:

我希望在管理订单详细信息页面上有单选按钮来选择发货地点(例如尚未发货、正在途中、已到达)。当我选择一项并按提交时,我希望客户能够在他/她的订单详细信息页面上看到信息。

我已经通过编辑此文件成功在管理端添加了单选按钮-- 应用程序/设计/adminhtml/默认/默认/模板/销售/订单/ View /选项卡/info.phtml --但我相信如果Magento更新的话它会被覆盖。对客户端文件的编辑也是如此—— 应用程序/design/frontend/base/default/template/sales/order/info/buttons.phtml

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

问题摘要:

  1. 如何以可持续的方式编辑订单详细信息页面(管理员和客户的)?
  2. 我应该在 phpMyAdmin 中创建一个新的表列,还是必须通过 Magento 以某种方式完成?
  3. 我可以使用单选按钮来更改表格吗?
  4. 我可以检索该信息并将其显示在客户订单详细信息页面上吗?

任何指导,无论多么片面,都将不胜感激。为了走到这一步,我一直在努力反对谷歌,但我觉得距离真正解决问题还没有那么近。

最佳答案

所以,我(大部分)解决了我的问题。这是我所做的:

我在 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); ?>

其中登录名和密码是我的实际数据库用户名和密码。因此,它从单选按钮获取提交的值,并将其放入 sales_flat_order 表中具有给定订单 ID (entity_id) 的订单的行中。

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

关于php - 编辑 Magento 管理和用户订单详细信息页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25916067/

相关文章:

mysql - JOIN 与 "just"选择

mysql - 如何将这个复杂的查询添加到 CDbCriteria (Yii 1.x)

magento - 打开简单产品时转发至可配置产品

magento - 如何使用外部库? (Pcl压缩)

php - Magento - 通知 : Undefined index: in ConfigurableSwatches/Helper/Productimg. php

php - Laravel 工厂 : Manual Increment of Column

php - 对象数组上的 array_diff

PHPUnit - 数据库测试,如何管理它

php - Ubuntu 12.04 上的 Apache2 : mysqlnd+mysqli and pdo_mysql - can i have both?

php - 使用 HTML 下拉菜单中的值调用 PHP 函数