Magento - 将列添加到销售订单网格不起作用

时间:2014-09-20 10:11:41

标签: php magento grid

我正在尝试向Magento的销售订单网格添加新列。 我尝试按照此处的说明操作:http://www.atwix.com/magento/customize-orders-grid/

当我在localhost中安装的magento中使用它时,此方法正常工作,但对于托管在另一台服务器中的magento不起作用(即使删除该网格中没有任何更改的列)。

此外,当我安装扩展程序以自定义我的订单网格时,它无法正常工作(网格甚至无法显示,但在我的localhost版本中正常工作)

是否有解释这个或其他方法来编辑我的订单网格?

我希望我的问题很清楚,谢谢你的帮助。

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

 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();
}

2 个答案:

答案 0 :(得分: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 license@magentocommerce.com 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 <core@magentocommerce.com>
     */
    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));
        }

    }

答案 1 :(得分:0)

您需要在进行更改前禁用编辑

相关问题