Есть вопрос?
Зайди на форум

Поиск на сайте: Advanced

Denix - новый дистрибутив Linux. Русификация Ubuntu и установка кодеков

dkws.org.ua
Форум сайта dkws.org.ua
 
Главная    ТемыТемы    АльбомАльбом    РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Magento: сортировка брошенных корзин

 
Начать новую тему Ответить на тему    Список форумов dkws.org.ua -> PHP
 
Автор Сообщение
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13804
Откуда: Кировоград, Украина

СообщениеДобавлено: Пн Сен 23, 2019 9:45 am    Заголовок сообщения: Magento: сортировка брошенных корзин
Ответить с цитатой

Есть в Magento 1.x такой отчет: брошенные корзины. Когда юзер заходит на сайт, набросает что-то в корзину, а потом не доводит покупку до логического конца. Этот отчет и отображает такие ситуации.

Проблема в том, что этот отчет по умолчанию сортируется только по полю updated_at и в панели админа этот порядок никак не изменить. Грид тоже без возможности сортировки.

По умолчанию порядок сортировки хард-кодирован в функции prepareForAbandonedReport:

Код:
public function prepareForAbandonedReport($storeIds, $filter = null)
{
    $this->addFieldToFilter('items_count', array('neq' => '0'))
        ->addFieldToFilter('main_table.is_active', '1')
        ->addSubtotal($storeIds, $filter)
        ->addCustomerData($filter)
       [b] ->setOrder('updated_at');[/b]
    if (is_array($storeIds) && !empty($storeIds)) {
        $this->addFieldToFilter('store_id', array('in' => $storeIds));
    }


    return $this;
}


Меня это мало устраивает. Точнее мне то пофиг вообще (чем меня реже трогают, тем мне лучше), менеджеры жалуются, что не могут полноценно работать с гридом. Ну да, выгрузить грид в CSV, а потом в excel сделать сортировку - занятие то еще.

В общем полез искать решение. Решение далось не сразу, но все свои пробы и ошибки выкладывать не буду. Сразу результат.

Итак, лезем в app/code/core/Mage/Adminhtml/Block/Report/Shopcart/Abandoned. Открываем файл Grid.php. Собственно, он там будет один, так что даже косоглазые не промахнутся.

Сначала нам нужно реализовать возможность сортировки по заданным колонкам грида. Для этого находим вызовы метода addColumn() - в функции _prepareColumns() и для нужных нам (менеджерам) колонок делаем sortable = true:

Код:
$this->addColumn('updated_at', array(
        'header'    =>Mage::helper('reports')->__('Updated At'),
        'width'     =>'170px',
        'type'      =>'datetime',
        'index'     =>'updated_at',
        'filter_index'=>'main_table.updated_at',
       [b] 'sortable'  =>true[/b]
    ));


Можно сохранить файл прямо сейчас и открыть отчет снова. Возможность сортировки будет, но самой сортировки - нет. То есть кликнуть по столбцу и изменить порядок сортировки можно, но коллекция будет выводиться в прежнем порядке.

Теперь идем в функцию _prepareCollection() добавляем код:

Код:
$sort = $this->getRequest()->getParam('sort');
$dir = $this->getRequest()->getParam('dir');
if (isset($sort) && isset($dir)) {
    $collection->getSelect()->order("$sort $dir");
}


Когда мы кликаем на заголовке и выбираем порядок сортировки передаются два параметра - sort (название столбца) и dir (направление - asc или desc). Собственно, все что нам остается - это отсортировать коллекцию, что мы и делаем методом order. Приведенный кусок кода нужно вставить перед строкой:

Код:
$this->setCollection($collection);


Собственно все, надеюсь, сэкономил кому-то пару десятков, а то и сотен баксов.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
Сергей Борисович

Завсегдатай


Зарегистрирован: 13.10.2012
Сообщения: 656

СообщениеДобавлено: Вт Сен 24, 2019 7:33 pm    Заголовок сообщения:
Ответить с цитатой

Грид , это что ?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13804
Откуда: Кировоград, Украина

СообщениеДобавлено: Пт Сен 27, 2019 11:07 am    Заголовок сообщения:
Ответить с цитатой

Сетка, таблица
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
Сергей Борисович

Завсегдатай


Зарегистрирован: 13.10.2012
Сообщения: 656

СообщениеДобавлено: Сб Сен 28, 2019 1:16 pm    Заголовок сообщения:
Ответить с цитатой

Понятно.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему Ответить на тему    Список форумов dkws.org.ua -> PHP Часовой пояс: GMT
Страница 1 из 1
 Главная страница сайта
 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
© Колисниченко Денис