概要の順にSKUで注文を並べ替えます
-
16-10-2019 - |
質問
この質問には、グリッドが販売 - >注文 - > [注文を選択] - >情報に関するものです。
一番下には、注文が付いたグリッドが表示されます。 SKUで並べ替えたいです。
in:/app/code/core/mage/sales/model/order.php私は見つけました:
public function getItemsCollection($filterByTypes = array(), $nonChildrenOnly = false)
{
if (is_null($this->_items)) {
$this->_items = Mage::getResourceModel('sales/order_item_collection')
->setOrderFilter($this);
if ($filterByTypes) {
$this->_items->filterByTypes($filterByTypes);
}
if ($nonChildrenOnly) {
$this->_items->filterByParent();
}
if ($this->getId()) {
foreach ($this->_items as $item) {
$item->setOrder($this);
}
}
}
return $this->_items;
}
これにより、注文グリッドが作成されますが、SKUでソートするにはどうすればよいですか?
解決
実際、コードは注文グリッドを作成しません。これにより、注文の注文のアイテムが取得されます。フロントエンドとバックエンドの両方で使用されています。
SKUでソートするように変更すると、アイテムはバックエンドとフロントエンドのSKUによって注文されます。
これを行うには、このコードを追加する必要があります。
$this->_items->getSelect()->order('sku');
直後の
if ($nonChildrenOnly) {
$this->_items->filterByParent();
}
もちろん、コードを編集しないでください。モデルを適切にオーバーライドします。
しかし、私はこのアプローチをお勧めしません。バックエンドでのみSKUのアイテムの順序が必要な場合は、テンプレートで並べ替えることができます。
テンプレートはです app\design\adminhtml\default\default\template\sales\order\view\items.phtml
。アイテムをレンダリングするコードを置き換えることができます(これを意味します)。
<?php $_items = $this->getItemsCollection() ?>
<?php $i=0;foreach ($_items as $_item):?>
<?php if ($_item->getParentItem()) continue; else $i++;?>
<tbody class="<?php echo $i%2?'even':'odd' ?>">
<?php echo $this->getItemHtml($_item) ?>
<?php echo $this->getItemExtraInfoHtml($_item) ?>
</tbody>
<?php endforeach; ?>
これとともに:
<?php $_items = $this->getItemsCollection() ?>
<?php $_sortedItems = array(); ?>
<?php foreach ($_items as $_item) : ?>
<?php $_sortedItems[$_item->getSku()] = $_item;?>
<?php endforeach;?>
<?php ksort($_sortedItems);//sort by sku?>
<?php $i=0;foreach ($_sortedItems as $_item):?>
<?php if ($_item->getParentItem()) continue; else $i++;?>
<tbody class="<?php echo $i%2?'even':'odd' ?>">
<?php echo $this->getItemHtml($_item) ?>
<?php echo $this->getItemExtraInfoHtml($_item) ?>
</tbody>
<?php endforeach; ?>
繰り返しますが...テンプレートを変更しないでください。自分のテーマに入れて、そこに変更してください。
これがあなたがどのように変更し、管理者のテーマを変更することができるかを示します.
所属していません magento.stackexchange