Главная / Создание и продвижение сайтов / САЙТОСТРОЕНИЕ / Prestashop / Быстрое удаление заказов в PrestaShop

Быстрое удаление заказов в PrestaShop

Всем привет! Продолжаем подстраивать под себя популярный движок интернет-магазина PrestaShop. Системы управления магазинами, в том числе и Преста, постоянно эволюционируют и развиваются, избавляясь от одних багов и обрастая другими. Ждать нового релиза движка не всегда разумно, если есть возможность самостоятельно устранить мелкие недостатки, повысив при этом уровень комфортности взаимодействия администратора с интерфейсом интернет-магазина.

Сегодня мне хотелось бы затронуть вопрос удобства работы с бэк-офисом. Не секрет, что для выполнения многих, казалось бы, очень простых операций над категориями и товаром требуется совершить немало действий и переходов со страницы на страницу, а для некоторых операций, таких, как удаление заказов, в PrestaShop 1.5.6.1 (и более поздних версиях) функционал просто отсутствует.

prestashop-knopka-udaleniya-zakazov-01

Как видно из скриншота, на странице обработки заказов у администратора нет возможности удалять заказы, ни выборочно, ни массово — по всей видимости, для формирования наиболее точных статистических данных. Однако, в процессе создания и тестирования интернет-магазина, в частности, корзины и процесса оформления заказов, в админке (бэк-офисе) накапливается много ненужных тестовых заказов. Сдавать готовый магазин клиенту с подобным мусором неправильно. Кроме того, часть владельцев интернет магазинов отключают статистику PrestaShop для снижения нагрузки на сервер и уменьшения размера базы данных, а вот кнопка удаления заказов в админке им не помешала бы. Расскажу о двух простых способах реализовать это на практике.

Удаление заказов в PrestaShop через phpMyAdmin

Заходим в Mysql своего хостинга, выбираем базу данных, относящуюся к вашему магазину, по умолчанию PrestaShop создает для своей базы данных префикс ps_. В правой (основной) части таблицы (закладка Обзор) находим и выбираем таблицу ps_orders (в моем случае префикс у таблицы другой). Видим все наши заказы с индивидуальными буквенными кодами. Отмечаем в соответствующих чек-боксах нужные (или все) заказы, должна получиться похожая картинка:

prestashop-knopka-udaleniya-zakazov-02

Затем нажимаем кнопку Удалить, подтверждаем выполнение запроса. При этом сама таблица не удаляется, очищается только ее содержимое. Все. Любуемся чистой страницей заказов в бэк-офисе.

prestashop-knopka-udaleniya-zakazov-03

Бэк-офис PrestaShop: кнопка удаления заказа

Добавим на страницу управления заказами в админке движка недостающую кнопку. Ничего сложного в этом нет. Через файловый менеджер, предоставляемый хостером или FTP-клиент находим файл ваш_сайт/controllers/admin/AdminOrdersController.php и редактируем его — встроенным редактором прямо на сервере или в своем компьютере с помощью Notepad++.

prestashop-knopka-udaleniya-zakazov-04

В теле файла находим следующую строчку:

$this->addRowAction('view');

Сразу после нее вставляем еще две строки, первая из которых добавляет стандартную кнопку-иконку выборочного удаления данных, вторая добавляет чекбоксы и кнопку массового удаления под общей таблицей — то есть, все то, что есть у нас на страницах управления товаром:

$this->addRowAction('delete');
$this->bulk_actions = array('delete' => array('text' => $this->l('Удалить отмеченное'), 'confirm' => $this->l('Удалить выбранные позиции?')));

В итоге должен получиться такой фрагмент:

$this->table = 'order';
$this->className = 'Order';
$this->lang = false;
$this->addRowAction('view');
$this->addRowAction('delete');
$this->bulk_actions = array('delete' => array('text' => $this->l('Удалить отмеченное'), 'confirm' => $this->l('Удалить выбранные позиции?')));
$this->explicitSelect = true;
$this->allow_export = true;
$this->deleted = false;
$this->context = Context::getContext();

Сохраняем отредактированный файл AdminOrdersController.php, заливаем его на сервер. Затем очищаем кэш магазина, кэш браузера и обновляем страницу управления заказами PrestaShop. Как видим, кнопки построчного и массового удаления заказов становятся нам доступны.

prestashop-knopka-udaleniya-zakazov-05

prestashop-knopka-udaleniya-zakazov-06

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

Расскажите об этой статье в соцсетях:

6 комментариев

  1. У престы глюков хватает, это точно. Пока ее настроишь, все на свете проклянешь. Но функционал, конечно, мощнейший.

  2. Екатерина

    Ничего, что в базе еще куча связанных таблиц?)) и после очистки таблицы заказов там остается мусор в виде деталей удаленных заказов и прочего.

    • Согласен, если удалять через phpMyAdmin вероятность того, что останутся хвосты в базе, присутствует. Поэтому лучше добавить для удаления заказов в Престашоп стандартную кнопку в бэк-офис. Проверил, способ работает.

  3. Хороший способ, спасибо.

    Вот только беда, что не все таблицы чистятся (способ через админку).

    Дополнительно нужно очищать в ручную таблицы:
    ps_adress, ps_message

    иначе адреса доставки и сообщения получаются попутаны

    и желательно тоже самое проделать разделом «корзины» в админке

    файл AdminCartsController.php

    чтобы очистить брошенные корзины

  4. Алексей

    Незадача, попробовал добавить кнопки в PrestaShop 1.6.1, кнопки в каждой строке добавились, а кнопки массового удаления нет. Подскажите, как подправить, уж больно удобная функция!

    • Алексей, по PrestaShop 1.6 и выше, к сожалению, не подскажу, не ковырял эту версию, а структура и содержание файлов отличается от 1.5. Кстати, и бэк-офис в 1.6 уже совсем другой — на мой взгляд, не слишком удобный. Поэтому пока от установки магазинов на 1.6 воздерживаюсь.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *