Làm cách nào tôi có thể thêm một cột vào lưới trong phần Quản trị trong Bán hàng> Đơn hàng?
Làm cách nào tôi có thể thêm một cột vào lưới trong phần Quản trị trong Bán hàng> Đơn hàng?
Câu trả lời:
Inchoo đã viết một bài viết tuyệt vời về việc mở rộng lưới đặt hàng. Và trên blog Atwix có một bài viết về việc thêm một cột từ một bảng khác.
Bài viết trên blog Inchoo về cơ bản mở rộng nó với một phần mở rộng tùy chỉnh. Trong trường hợp bạn không quen với việc viết phần mở rộng của riêng mình, tôi khuyên bạn nên tham gia vào hướng dẫn của Alan Storms hoặc phần mở rộng từ Magento 4U .
Bạn sẽ viết lại Mage_Adminhtml_Order_Grid
lớp khối thêm một cột vào _prepareColumns
phương thức và mở rộng _prepareCollection
phương thức với trường tùy chỉnh của bạn
Đây là một quá trình đơn giản gồm 2 bước. (ví dụ: tôi muốn thêm Địa chỉ Email và Thành phố đặt hàng trong lưới đơn hàng này).
Sao chép tập tin cốt lõi này cho bạn cục bộ đầu tiên trong cùng thư mục. ứng dụng / mã / lõi / Pháp sư / adminhtml / Chặn / Bán hàng / Đặt hàng / Grid.php
Bước 1: Thêm dòng mã sau vào hàm _prepareColumns ()
$this->addColumn('email', array(
'header' => Mage::helper('catalog')->__('Customer Email'),
'index' => 'email',
'type' => 'text'
));
$this->addColumn('city', array(
'header' => Mage::helper('catalog')->__('Order From City'),
'index' => 'city',
'type' => 'text'
));
Bước 2: Thêm dòng mã sau vào hàm _prepareCollection ()
$collection->getSelect()->join('sales_flat_order_address', 'main_table.entity_id = sales_flat_order_address.parent_id' ,array('email'=> 'email', 'city'=> 'city' ));
$collection->addFieldToFilter('sales_flat_order_address.address_type', array('eq' => 'billing'));
Truy vấn tổng thể sẽ như sau:
CHỌN main_table
. * , sales_flat_order_address
. email
NHƯ customer_email
, sales_flat_order_address
. city
TỪ sales_flat_order_grid
NHƯ main_table
THAM GIA sales_flat_order_address
VÀO main_table.entity_id = sales_flat_order_address.parent_id WHERE (sales_flat_order_address.address_type = 'billing')
Sửa đổi mã theo nhu cầu của bạn.
Mong rằng sẽ giúp.
Bạn có thể sử dụng câu trả lời của tôi từ một bài đăng trước trên Thêm Cột vào lưới (người quan sát) - Cột 'store_id' trong đó mệnh đề là vấn đề mơ hồ để thêm các cột bổ sung vào lưới Đơn hàng bán hàng thông qua người quan sát.
Viết lại là như vậy ngày hôm qua;)
Bạn có thể làm điều này bằng cách sử dụng các sự kiện. Xem câu trả lời trước đây tại đây:
Thêm cột Công ty vào Lưới quản trị khách hàng bằng Observer
trong đó cũng bao gồm một cách để điều chỉnh các bộ lọc.
Bạn chỉ cần điều chỉnh lưới bạn đang nhắm mục tiêu trong bit mã đầu tiên:
if ($event->getBlock() instanceof
Mage_Adminhtml_Block_Newsletter_Subscriber_Grid
) {