2014-09-20 100 views
0

我试图向Magento的销售订单网格添加新列。 我试过下面设在这里说明:http://www.atwix.com/magento/customize-orders-grid/Magento - 将列添加到销售订单网格不工作

这种方法工作时,我用它在我的本地主机安装的Magento,但在另一台服务器(托管Magento的甚至删除列没有什么,改变了没有工作格)。

此外,当我安装一个扩展来定制我的订单电网没有工作(网格甚至没有显示,但在我的本地版本工作正常)

是否有这个或解释另一种方法编辑我的订单网格?

我希望我的问题很清楚,并感谢您的帮助。

这是主要功能(_prepareCollection和_prepareCollection)在/app/code/local/Mage/Adminhtml/Block/Sales/Order/Grid.php:

protected function _prepareCollection() 
{ 
    $collection = Mage::getResourceModel($this->_getCollectionClass()); 
    $collection->getSelect()->join('cd_sales_flat_order', 'main_table.entity_id = cd_sales_flat_order.entity_id',array('shipping_description')); 
    $collection->getSelect()->join('cd_sales_flat_order_address', 'main_table.entity_id = cd_sales_flat_order_address.parent_id',array('postcode')); 
    $this->setCollection($collection); 
    return parent::_prepareCollection(); 
} 

protected function _prepareColumns() 
{ 
    $this->addColumn('shipping_method', array(
     'header' => Mage::helper('sales')->__('Shipping Method'), 
     'index' => 'shipping_description', 
    )); 

    $this->addColumn('postcode', array(
     'header' => Mage::helper('sales')->__('Postcode'), 
     'index' => 'postcode', 
    )); 

    $this->addColumn('real_order_id', array(
     'header'=> Mage::helper('sales')->__('Order #'), 
     'width' => '80px', 
     'type' => 'text', 
     'index' => 'increment_id', 
    )); 

    if (!Mage::app()->isSingleStoreMode()) { 
     $this->addColumn('store_id', array(
      'header' => Mage::helper('sales')->__('Purchased From (Store)'), 
      'index'  => 'store_id', 
      'type'  => 'store', 
      'store_view'=> true, 
      'display_deleted' => true, 
     )); 
    } 

    $this->addColumn('created_at', array(
     'header' => Mage::helper('sales')->__('Purchased On'), 
     'index' => 'created_at', 
     'type' => 'datetime', 
     'width' => '100px', 
    )); 

    $this->addColumn('billing_name', array(
     'header' => Mage::helper('sales')->__('Bill to Name'), 
     'index' => 'billing_name', 
    )); 


    $this->addColumn('base_grand_total', array(
     'header' => Mage::helper('sales')->__('G.T. (Base)'), 
     'index' => 'base_grand_total', 
     'type' => 'currency', 
     'currency' => 'base_currency_code', 
    )); 

    $this->addColumn('grand_total', array(
     'header' => Mage::helper('sales')->__('G.T. (Purchased)'), 
     'index' => 'grand_total', 
     'type' => 'currency', 
     'currency' => 'order_currency_code', 
    )); 

    $this->addColumn('status', array(
     'header' => Mage::helper('sales')->__('Status'), 
     'index' => 'status', 
     'type' => 'options', 
     'width' => '70px', 
     'options' => Mage::getSingleton('sales/order_config')->getStatuses(), 
    )); 

    if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/view')) { 
     $this->addColumn('action', 
      array(
       'header' => Mage::helper('sales')->__('Action'), 
       'width'  => '50px', 
       'type'  => 'action', 
       'getter'  => 'getId', 
       'actions' => array(
        array(
         'caption' => Mage::helper('sales')->__('View'), 
         'url'  => array('base'=>'*/sales_order/view'), 
         'field' => 'order_id', 
         'data-column' => 'action', 
        ) 
       ), 
       'filter' => false, 
       'sortable' => false, 
       'index'  => 'stores', 
       'is_system' => true, 
     )); 
    } 
    $this->addRssList('rss/order/new', Mage::helper('sales')->__('New Order RSS')); 

    $this->addExportType('*/*/exportCsv', Mage::helper('sales')->__('CSV')); 
    $this->addExportType('*/*/exportExcel', Mage::helper('sales')->__('Excel XML')); 

    return parent::_prepareColumns(); 
} 
+0

可以把你的代码之前禁用编译? – 2014-09-20 10:48:53

+0

您的缓存和编译是否被禁用? – MagentoMan 2014-09-20 14:23:10

+0

我的编译器状态为未启用的版本启用 – 2014-09-21 08:49:32

回答

0

复制和发布此代码工作正常在版本1.8.1

<?php 
    /** 
    * Magento 
    * 
    * NOTICE OF LICENSE 
    * 
    * This source file is subject to the Open Software License (OSL 3.0) 
    * that is bundled with this package in the file LICENSE.txt. 
    * It is also available through the world-wide-web at this URL: 
    * http://opensource.org/licenses/osl-3.0.php 
    * If you did not receive a copy of the license and are unable to 
    * obtain it through the world-wide-web, please send an email 
    * to [email protected] so we can send you a copy immediately. 
    * 
    * DISCLAIMER 
    * 
    * Do not edit or add to this file if you wish to upgrade Magento to newer 
    * versions in the future. If you wish to customize Magento for your 
    * needs please refer to http://www.magentocommerce.com for more information. 
    * 
    * @category Mage 
    * @package  Mage_Adminhtml 
    * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com) 
    * @license  http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) 
    */ 

    /** 
    * Adminhtml sales orders grid 
    * 
    * @category Mage 
    * @package Mage_Adminhtml 
    * @author  Magento Core Team <[email protected]> 
    */ 
    class Mage_Adminhtml_Block_Sales_Order_Grid extends Mage_Adminhtml_Block_Widget_Grid 
    { 

     public function __construct() 
     { 
      parent::__construct(); 
      $this->setId('sales_order_grid'); 
      $this->setUseAjax(true); 
      $this->setDefaultSort('created_at'); 
      $this->setDefaultDir('DESC'); 
      $this->setSaveParametersInSession(true); 
     } 

     /** 
     * Retrieve collection class 
     * 
     * @return string 
     */ 
     protected function _getCollectionClass() 
     { 
      return 'sales/order_grid_collection'; 
     } 


     protected function _prepareCollection() 
     { 
      $collection = Mage::getResourceModel($this->_getCollectionClass()); 
      $collection->getSelect()->joinLeft('sales_flat_order_address', 'main_table.entity_id = sales_flat_order_address.parent_id',array('telephone','city','postcode'))->where("sales_flat_order_address.address_type = 'billing'"); 
      $collection->getSelect()->joinLeft('sales_flat_order', 'main_table.entity_id = sales_flat_order.entity_id',array('total_qty_ordered')); 
      $collection->getSelect()->joinLeft(array('sfoa' => 'sales_flat_order_address'), 'main_table.entity_id = sfoa.parent_id AND sfoa.address_type="shipping"', array('sfoa.street', 'sfoa.city', 'sfoa.region', 'sfoa.postcode', 'sfoa.telephone')); 
      $collection->getSelect()->joinLeft('sales_flat_order_payment', 'main_table.entity_id = sales_flat_order_payment.parent_id',array('method')); 
      $this->setCollection($collection); 
      return parent::_prepareCollection(); 
     } 
     protected function _getAttributeOptions($attribute_code) 
      { 
       $attribute = Mage::getModel('eav/config')->getAttribute('catalog_product', $attribute_code); 
       $options = array(); 
       foreach($attribute->getSource()->getAllOptions(true, true) as $option) { 
        $options[$option['value']] = $option['label']; 
       } 
       return $options; 
      } 
      protected function _prepareColumns() 
      { 
      $this->addColumn('created_at', array(
      'header' => Mage::helper('sales')->__('Date'),//Date=Purchased On 
      'index' => 'created_at', 
      'type' => 'datetime', 
      'width' => '100px', 
      'filter_index' => 'main_table.created_at',// 
      )); 
      $this->addColumn('real_order_id', array(
      'header'=> Mage::helper('sales')->__('Order Id'), //Order #=order id 
      'width' => '80px', 
      'type'=> 'text', 
      'index' => 'increment_id', 
      'filter_index' => 'main_table.increment_id', 
      )); 
      if (!Mage::app()->isSingleStoreMode()) { 
      $this->addColumn('store_id', array(
      'header'=> Mage::helper('sales')->__('Purchased From (Store)'), 
      'index'=> 'store_id', 
      'type'=> 'store', 
      'filter_index' => 'main_table.store_id', 
      'store_view'=> true, 
      'display_deleted' => true, 
      )); 
      } 
      $this->addColumn('billing_name', array(
      'header' => Mage::helper('sales')->__('Customer Name'), //Bill to Name=Customer Name 
      'index' => 'billing_name', 
      'filter_index' => 'main_table.billing_name', 
      )); 
      $this->addColumn('telephone', array(
      'header' => Mage::helper('sales')->__('Mobile'), 
      'index' => 'telephone', 
      'filter_index' => 'sales_flat_order_address.telephone', 
      )); 
      $this->addColumn('city', array(
      'header' => Mage::helper('sales')->__('City'), 
      'index' => 'city', 
      'filter_index' => 'sales_flat_order_address.city', 
      )); 
      $this->addColumn('postcode', array(
      'header' => Mage::helper('sales')->__('Pincode'), 
      'index' => 'postcode', 
      'filter_index' => 'sales_flat_order_address.postcode', 
      )); 
      $this->addColumn('city', array(
        'header' => Mage::helper('sales')->__('City'), 
        'index' => 'city', 'filter_condition_callback' => array($this, '_addEGColumnFilter'), 
       )); 
       $this->addColumn('street', array(
        'header' => Mage::helper('sales')->__('Street'), 
        'index' => 'street', 
        'filter_condition_callback' => array($this, '_addEGColumnFilter'), 
       )); 
       $this->addColumn('postcode', array(
        'header' => Mage::helper('sales')->__('Postcode'), 
        'index' => 'postcode', 
        'filter_condition_callback' => array($this, '_addEGColumnFilter'), 
       )); 
       $this->addColumn('telephone', array(
        'header' => Mage::helper('sales')->__('Telephone'), 
        'index' => 'telephone', 
        'filter_condition_callback' => array($this, '_ customColumnFilter'), 
       )); 
      $this->addColumn('method', array(
      'header' => Mage::helper('sales')->__('Payment method'), 
      'index' => 'method', 
      'filter_index' => 'sales_flat_order_payment.method', 
      )); 
      $this->addColumn('total_qty_ordered', array(
      'header' => Mage::helper('sales')->__('Qty'), 
      'index' => 'total_qty_ordered', 
      'filter_index' => 'sales_flat_order.total_qty_ordered', 
      )); 
      $this->addColumn('color', array(
      'header' => Mage::helper('sales')->__('Color'), 
      'index' => 'color', 
      'filter_index' => 'sales_flat_order.color', 
      )); 
      $this->addColumn('grand_total', array(
      'header' => Mage::helper('sales')->__('Order amount'),//G.T. (Purchased)=Order amount 
      'index' => 'grand_total', 
      'type'=> 'currency', 
      'currency'=> 'order_currency_code', 
      'filter_index' => 'main_table.grand_total', 
      )); 
      $this->addColumn('status', array(
      'header' => Mage::helper('sales')->__('Status'), 
      'index' => 'status', 
      'filter_index' => 'main_table.status', 
      'type' => 'options', 
      'width' => '70px', 
      'options' => Mage::getSingleton('sales/order_config')->getStatuses(), 
      )); 
      if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/view')) { 
      $this->addColumn('action', 
      array(
      'header'=> Mage::helper('sales')->__('Action'), 
      'width'=> '50px', 
      'type'=> 'action', 
      'getter' => 'getId', 
      'actions'=> array(
      array(
      'caption' => Mage::helper('sales')->__('View'), 
      'url' => array('base'=>'*/sales_order/view'), 
      'field' => 'order_id' 
      ) 
      ), 
      'filter'=> false, 
      'sortable'=> false, 
      'index' => 'stores', 
      'is_system' => true, 
      )); 
      } 
      $this->addRssList('rss/order/new', Mage::helper('sales')->__('New Order RSS')); 
      $this->addExportType('*/*/exportCsv', Mage::helper('sales')->__('CSV')); 
      $this->addExportType('*/*/exportExcel', Mage::helper('sales')->__('Excel')); 
      return parent::_prepareColumns(); 
      } 


     protected function _prepareMassaction() 
     { 
      $this->setMassactionIdField('entity_id'); 
      $this->getMassactionBlock()->setFormFieldName('order_ids'); 
      $this->getMassactionBlock()->setUseSelectAll(false); 

      if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/cancel')) { 
       $this->getMassactionBlock()->addItem('cancel_order', array(
        'label'=> Mage::helper('sales')->__('Cancel'), 
        'url' => $this->getUrl('*/sales_order/massCancel'), 
       )); 
      } 

      if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/hold')) { 
       $this->getMassactionBlock()->addItem('hold_order', array(
        'label'=> Mage::helper('sales')->__('Hold'), 
        'url' => $this->getUrl('*/sales_order/massHold'), 
       )); 
      } 

      if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/unhold')) { 
       $this->getMassactionBlock()->addItem('unhold_order', array(
        'label'=> Mage::helper('sales')->__('Unhold'), 
        'url' => $this->getUrl('*/sales_order/massUnhold'), 
       )); 
      } 

      $this->getMassactionBlock()->addItem('pdfinvoices_order', array(
       'label'=> Mage::helper('sales')->__('Print Invoices'), 
       'url' => $this->getUrl('*/sales_order/pdfinvoices'), 
      )); 

      $this->getMassactionBlock()->addItem('pdfshipments_order', array(
       'label'=> Mage::helper('sales')->__('Print Packingslips'), 
       'url' => $this->getUrl('*/sales_order/pdfshipments'), 
      )); 

      $this->getMassactionBlock()->addItem('pdfcreditmemos_order', array(
       'label'=> Mage::helper('sales')->__('Print Credit Memos'), 
       'url' => $this->getUrl('*/sales_order/pdfcreditmemos'), 
      )); 

      $this->getMassactionBlock()->addItem('pdfdocs_order', array(
       'label'=> Mage::helper('sales')->__('Print All'), 
       'url' => $this->getUrl('*/sales_order/pdfdocs'), 
      )); 

      $this->getMassactionBlock()->addItem('print_shipping_label', array(
       'label'=> Mage::helper('sales')->__('Print Shipping Labels'), 
       'url' => $this->getUrl('*/sales_order_shipment/massPrintShippingLabel'), 
      )); 

      return $this; 
     } 

     public function getRowUrl($row) 
     { 
      if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/view')) { 
       return $this->getUrl('*/sales_order/view', array('order_id' => $row->getId())); 
      } 
      return false; 
     } 

     public function getGridUrl() 
     { 
      return $this->getUrl('*/*/grid', array('_current'=>true)); 
     } 

    } 
0

您将需要进行更改

相关问题