我正在运行Magento Enterprise 1.9,并且客户未在“我的帐户”的“订单历史记录”部分中看到任何订单。我已经调试了很多,只是无法弄清楚发生了什么。奇怪的是,在我们的登台服务器上,它可以正常工作。
到目前为止我做了什么:
1)确保<visible_on_front/>
适用于/app/code/core/Mage/Sales/etc/config.xml
内的每个订单状态(因此它们都应该可见)。
2)app\code\core\Mage\Sales\Block\Order\History.php
(view file source)从数据库中获取订单,并使用$this->setOrders($orders);
为模板文件设置订单。我已调试此对象并输出原始SQL以获取此信息:
SELECT `main_table`.*
FROM `sales_flat_order` AS `main_table`
WHERE ( main_table.customer_id = '4' )
AND ( state IN ( 'new', 'processing', 'complete', 'closed',
'canceled', 'holded', 'payment_review' ) )
此 在登台服务器和实时服务器上为我的测试客户返回订单。
3)app\design\frontend\enterprise\astleyclarke\template\sales\order\history.phtml
(view file source)是负责输出订单的相应模板文件。它使用$_orders = $this->getOrders();
抓取订单并使用if($_orders->getSize()):
进行检查。 此时出现问题。实时服务器上报告的大小为0,尽管它不在登台服务器上,尽管两台服务器在我手动运行SQL时报告数据库中的订单。
所以对我来说,似乎$ orders对象没有被实时服务器上的phtml文件正确传递或获取。
非常感谢任何其他想法或帮助。
答案 0 :(得分:0)
订单集合在Mage_Sales_Block_Order_History::__construct
初始化。
但该集合尚未加载。
您可以做什么调试,您可以在上面的函数中临时添加$orders->load()
,然后检查_items
对象的$order
属性。是否列出了订单?
您可以提取(string) $order->getSelect()
使用的选择。
如果在这种情况下获得订单,则可能会在块_construct
和视图呈现之间操纵集合。
答案 1 :(得分:0)
我知道这是一个老问题,但我认为OP遇到了以下情况。
安装了一个扩展程序,重新定义了订单历史记录的模板phtml。 xml配置指向安装在base/default
下的模板文件,但服务器使用名为enterprise/astleyclarke
的主题,因此无法访问模板文件,在这种情况下将不会输出,也不会生成日志输出
在app-folder及更高版本的history.phtml
之后搜索xml文件。有一个配置文件很可能指向活动主题下不存在的位置。
我最近遇到了同样的问题,在base/default/layout/chipmaster/reant.xml
下安装的扩展程序xml有以下内容:
<template>chipmaster/reant/sales/order/history.phtml</template>
但是服务器正在使用主题xyz/default
,并且配置中的历史文件隐藏在:
design/frontend/base/default/template/chipmaster/reant/sales/order/history.phtml
要使服务器再次打印历史记录,请将文件及其目录结构移动到主题中,或编辑xml文件。我做了之后和编辑之后
<template>sales/order/history.phtml</template>
这是默认位置,我们再次在前端订购了订单历史记录。