在history.phtml上的Magento中的自定义状态

时间:2013-07-29 21:22:37

标签: magento

我创建了一些超出默认Magento状态的自定义状态。

当我抓住订单发送到制作时,我通过API在Magento中设置状态。问题是,如果订单设置为这些自定义状态之一,则不会在客户的“我的帐户订单历史记录”区域中显示订单。

在“我的帐户订单历史记录”区域显示这些订单时,我需要做些什么?我的自定义状态目前已设置?

出于问题的缘故,这个状态被称为“新状态”,我已将其分配给处理状态。

2 个答案:

答案 0 :(得分:3)

简短回答...将其与app/code/core/Mage/Sales/config.xml合并或(更好)将其添加到您自己的本地模块中的config.xml。修改核心文件是不受欢迎的(但也会发生)。

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(),了解它如何从配置中提取这些内容。

答案 1 :(得分:0)

    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>