Сортировка заказов SKU в порядке обзора
-
16-10-2019 - |
Вопрос
Этот вопрос касается сетки в: Sales-> Orders-> [Выберите заказ]-> Информация.
Внизу вы можете увидеть сетку с заказами. Я хотел бы сортировать их по SKU.
В:/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; ?>
Опять же ... не изменяйте шаблон. Поместите это в свою собственную тему и измените его там.
Вот как вы можете изменить и административную тему.