私は自分が何をしているのかを説明するために最善を尽くします。
販売/注文グリッドの grid.php ファイルに 4 つの列を手動で追加しました。
現在、合計レコードに間違った数が表示されています。
1500 件以上のレコードがありますが、1190 件しか表示されません。
これが grid.php ファイルのコードです。
<?php class Mage_Adminhtml_Block_Sales_Order_Grid extends Mage_Adminhtml_Block_Widget_Grid { public function callback_skus($value, $row, $column, $isExport) { $increment_id = $value; $_order = Mage::getModel('sales/order')->loadByIncrementId($increment_id); $_items = $_order->getAllItems(); $skus=""; foreach ($_items as $item) { $skus .= $item->getSku()."<br />"; } return $skus; } 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()->join('sales_flat_order_payment', 'sales_flat_order_payment.parent_id = main_table.entity_id',array('method')); $collection->getSelect()->group('main_table.entity_id'); $collection->getSelect()->group('sales_flat_order_payment.parent_id'); $collection->getSelect()->join('sales_flat_shipment_track', 'main_table.entity_id = sales_flat_shipment_track.order_id',array('track_number'=> new Zend_Db_Expr('group_concat(DISTINCT `sales_flat_shipment_track`.track_number SEPARATOR ", ")'),'title' => new Zend_Db_Expr('(SELECT group_concat(`sales_flat_shipment_track`.title SEPARATOR ", ")FROM `sales_flat_shipment_track` As `sales_flat_shipment_track` WHERE `main_table`.`entity_id` = `sales_flat_shipment_track`.`order_id` )'))); $collection->getSelect()->join('sales_flat_order_address', "main_table.entity_id = sales_flat_order_address.parent_id AND sales_flat_order_address.address_type='shipping'",array('country_id')); $collection->getSelect()->joinLeft('sales_flat_order_item', 'main_table.entity_id = sales_flat_order_item.order_id',array('sku')); $collection->getSelect()->group('main_table.entity_id'); $this->setCollection($collection); $orders = Mage::getResourceModel('sales/order_collection'); foreach($orders as $order){ $items = $order->getAllVisibleItems(); foreach($items as $item){ $sku = $item->getSku(); } } $collection->getSize(); $collection->count(); return parent::_prepareCollection(); } public function count() { $this->load(); return count($this->_prepareColumns); } protected function _prepareColumns() { $this->addColumn('sku', array( 'header' => Mage::helper('sales')->__('SKU#'), 'index' => 'increment_id', 'width' => '80px', 'frame_callback' => array($this, 'callback_skus'), 'filter_index' => 'sales_flat_order_item.sku', )); $this->addColumn('real_order_id', array( 'header'=> Mage::helper('sales')->__('Order #'), 'width' => '80px', 'type' => 'text', 'index' => 'increment_id', )); $this->addColumn('country_id', array( 'header'=> Mage::helper('sales')->__('Shipping Country'), 'width' => '80px', 'type' => 'text', 'index' => 'country_id', )); $this->addColumn('method', array( 'header'=> Mage::helper('sales')->__('Payment Method'), 'width' => '80px', 'type' => 'text', 'index' => 'method', )); 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('shipping_name', array( 'header' => Mage::helper('sales')->__('Ship to Name'), 'index' => 'shipping_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(), )); $this->addColumn('track_number', array( 'header'=> Mage::helper('sales')->__(' Track Number'), 'width' => '80px', 'type' => 'text', 'index' => 'track_number', )); $this->addColumn('title', array( 'header'=> Mage::helper('sales')->__('Title'), 'width' => '80px', 'index' => 'title', )); 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(); } 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)); } }
これで、テーブルを結合するためのコードを記述し、_prepareCollections() 関数でグリッドからアクセスします。
_addcolumns() 関数に 4 つの列を追加しました。お支払い方法、Sku、タイトル、トラック番号を追加しています。
問題
合計 1190 件のレコードが見つかりました。
ただし、1500 レコードすべてを表示する必要があります。私がしなければならないことを教えてください。
また、以前の問題のリンクを参照してください。以前の問題のリンク