我創建了一些超出默認Magento狀態的自定義狀態。Magento中的自定義狀態history.phtml
當我抓取訂單發送到生產環境時,我通過API在Magento中設置了狀態。問題是,如果訂單設置爲這些自定義狀態之一,則不會在客戶的「我的賬戶訂單歷史記錄」區域中顯示訂單。
我需要做什麼才能在我的賬戶訂單歷史記錄區域顯示這些訂單,這些訂單有我的當前自定義狀態?
出於問題的原因,此狀態被稱爲「新狀態」,我已將其分配到處理狀態。
我創建了一些超出默認Magento狀態的自定義狀態。Magento中的自定義狀態history.phtml
當我抓取訂單發送到生產環境時,我通過API在Magento中設置了狀態。問題是,如果訂單設置爲這些自定義狀態之一,則不會在客戶的「我的賬戶訂單歷史記錄」區域中顯示訂單。
我需要做什麼才能在我的賬戶訂單歷史記錄區域顯示這些訂單,這些訂單有我的當前自定義狀態?
出於問題的原因,此狀態被稱爲「新狀態」,我已將其分配到處理狀態。
簡短的回答...合併這與app/code/core/Mage/Sales/config.xml
或(更好)將其添加到3210在您自己的本地模塊。修改核心文件是(但發生)皺起了眉頭。
將new_status
更改爲您的狀態。
<config>
<global>
<sales>
<order>
<statuses>
<new_status translate="label">
<label>New Status</label>
</new_status>
</statuses>
<states>
<new_status translate="label">
<label>New Status</label>
<statuses>
<new_status default="1"/>
</statuses>
<visible_on_front>1</visible_on_front>
</new_status>
</states>
</order>
</sales>
</global>
</config>
龍回答:見Mage_Sales_Block_Order_History
具體而言,抓住爲了收集
$orders = Mage::getResourceModel('sales/order_collection')
->addFieldToSelect('*')
->addFieldToFilter('customer_id', Mage::getSingleton('customer/session')->getCustomer()->getId())
->addFieldToFilter('state', array('in' => Mage::getSingleton('sales/order_config')->getVisibleOnFrontStates()))
->setOrder('created_at', 'desc')
第二addFieldToFilter
尋找有序狀態一組「可見」狀態中的一塊。這些狀態組由Mage_Sales_Order_Config
提取,並在配置中設置。請參閱上面的配置更改。您可以查看Mage_Sales_Order_Config
和函數_getStates()
以查看它如何從配置中獲取這些值。
Suppose your custom order status is paymentsuccess in magento order_status table
<config>
<global>
<sales>
<order>
<statuses>
<paymentsuccess translate="label">
<label>Payment Successful</label>
</paymentsuccess>
</statuses>
<states>
<paymentsuccess translate="label">
<label>Payment Successful</label>
<statuses>
<paymentsuccess default="1"/>
</statuses>
<visible_on_front>1</visible_on_front>
</paymentsuccess>
</states>
</order>
</sales>
</global>
</config>