Создание в OpenCart инструмента экспорта товаров в CSV

29 Мая 2022г. в 05:07

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

Перейти в панель управления (панель администрирования) товарами и вручную изменить цены одна за другой.

Предоставить соответствующему лицу прямой доступ к базе данных и позволить ему или ей поработать с вашими данными.

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

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

Каково решение?
Таким образом, должен существовать механизм, с помощью которого элементы можно отформатировать определенным образом, а затем напрямую импортировать / экспортировать их в систему пакетно. CSV (Comma-Separated-Value) — это лучшее решение для таких целей. И это именно то, о чем мы расскажем в этом руководстве.

Что такое CSV?
CSV — это сокращение от «Comma Separated Value» (разделенные через запятую значения). Это способ форматирования информации, которая извлекается из базы данных, чтобы ее можно было читать и редактировать в обычной программе для работы с электронными таблицами. Затем вы можете добавить эту информацию в базу данных всей партией.

Экспорт продуктов в OpenCart
Учитывая описанный выше сценарий, иногда сложно добавлять и редактировать товары пакетно, поэтому мы собираемся создать в системе Инструмент экспорта в CSV. Таким образом мы можем получить список всех товаров в определенном формате, чтобы можно было легко читать, добавлять и редактировать информацию. Давайте приступим к созданию инструмента экспорта.

1. Кнопка экспорта на странице товаров
1.1 Контроллер
Откройте файл (директория вашего магазина на opencart)/admin/controller/catalog/product.php. Найдите функцию getList(). Добавьте следующую строку после этой строки кода:

$this->data['products'] = array();
$this->data['export_csv'] = $this->url->link('catalog/product/exportCSV', 'token=' . $this->session->data['token'] . $url, 'SSL');

$this->data['products'] = array();
$this->data['export_csv'] = $this->url->link('catalog/product/exportCSV', 'token=' . $this->session->data['token'] . $url, 'SSL');
Контроллер просто анализирует URL-адрес экспорта, чтобы его можно было связать с кнопкой.

1.2. Представление
Откройте файл (директория вашего магазина на opencart)/admin/view/template/catalog/product_list.tpl. Найдите HTML-код:

<div class="buttons">

<div class="buttons">
Добавьте в разметку кнопку экспорта:

<a onclick="location = '<?php echo $export_csv; ?>'" class="button">Export CSV</a>

<a onclick="location = '<?php echo $export_csv; ?>'" class="button">Export CSV</a>
Перейдите в панель администрирования магазина и откройте раздел «Каталог»> «Товары», вы увидите в этом разделе кнопку «Экспорт», как показано на следующем скриншоте.



Экспорт товаров
2.1 Контроллер
Откройте файл ((директория вашего магазина на opencart)/admin/controller/catalog/product.php. Создайте новую публичную функцию public function exportCSV(){ }. Внутри функции просто добавьте следующие строки кода.

$this->load->model('catalog/product'); // Загрузка Модели Товаров

$temp_data = $this->model_catalog_product->getProducts(array('filter_status'=>1)); // Захват всех товаров, для которых задан статус Доступен

/* Начало заголовка CSV */

header("Content-Type: text/csv");
header("Content-Disposition: attachment; filename=ProductsCSV-".date('d-m-Y').".csv");
// Отключаем кэширование
header("Cache-Control: no-cache, no-store, must-revalidate"); // HTTP 1.1
header("Pragma: no-cache"); // HTTP 1.0
header("Expires: 0"); // Прокси

/* Конец заголовка CSV */

$output = fopen("php://output", "w"); //Открывает и очищает содержимое файла; или создает новый файл, если он еще не существует

$data = array();

// Нам не нужно экспортировать всю доступную информацию, поэтому создаем разделенный массив для этой информации
foreach($temp_data as $data)
{
$data[] = array(
'product_id' =>$data['product_id'],
'model' =>$data['model'],
'name' =>$data['name'],
'quantity' =>$data['quantity'],

);

}

// Экспорт CSV
foreach($data as $row)
{
fputcsv($output, $row); // здесь вы можете изменить разделитель / символ закрытия
}

fclose($output); // Закрываем файл

$this->load->model('catalog/product'); // Загрузка Модели Товаров

$temp_data = $this->model_catalog_product->getProducts(array('filter_status'=>1)); // Захват всех товаров, для которых задан статус Доступен

/* Начало заголовка CSV */

header("Content-Type: text/csv");
header("Content-Disposition: attachment; filename=ProductsCSV-".date('d-m-Y').".csv");
// Отключаем кэширование
header("Cache-Control: no-cache, no-store, must-revalidate"); // HTTP 1.1
header("Pragma: no-cache"); // HTTP 1.0
header("Expires: 0"); // Прокси

/* Конец заголовка CSV */

$output = fopen("php://output", "w"); //Открывает и очищает содержимое файла; или создает новый файл, если он еще не существует

$data = array();

// Нам не нужно экспортировать всю доступную информацию, поэтому создаем разделенный массив для этой информации
foreach($temp_data as $data)
{
$data[] = array(
'product_id' =>$data['product_id'],
'model' =>$data['model'],
'name' =>$data['name'],
'quantity' =>$data['quantity'],

);

}

// Экспорт CSV
foreach($data as $row)
{
fputcsv($output, $row); // здесь вы можете изменить разделитель / символ закрытия
}

fclose($output); // Закрываем файл
Вот и все! Мы создали инструмент экспорта отваров из панели OpenCart. Просто нажмите кнопку экспорта, и CSV-файл будет загружен на ваш компьютер. Вы можете добавить столько столбцов, сколько вам нужно.

Заключение
«Время — золото.» Как предприниматель или бизнесмен, вы не хотите тратить свое драгоценное время. Что касается программного обеспечения, предприниматели всегда ищут лучший и наиболее эффективный подход к выполнению работы.

Таким образом, в этом руководстве мы создали бизнес-инструмент, который поможет быстрее экспортировать информацию о товарах из OpenCart с использованием формата данных CSV. Я также собираюсь написать руководство «Импорт CSV», чтобы вы могли легко добавлять и обновлять информацию в соответствии с вашими потребностями.

Надеюсь, вы нашли эту статью полезной для своего бизнеса. Благодарю за внимание!