Создание в OpenCart инструмента импорта товаров из CSV — Часть 1
29 Мая 2022г. в 05:07В нашей предыдущей статье мы экспортировали товары и информацию о них (идентификатор товара, модель, название товара и цену), поэтому, продолжая эту работу, давайте приступим к созданию инструмента, с помощью которого будем производить в OpenCart импорт товара!
Что мы будем создавать?
Мы добавим в OpenCart систему импорта. Как мы знаем, OpenCart — это бесплатное решение для электронной коммерции, которое также позволяет разработчикам настраивать его определенным образом. Давайте рассмотрим магазины. В ходе их работы различные вещи очень часто меняются, например, изменяются количества, цены, описания и т. д.
Для любого бизнеса, чтобы расти, очень важно обновлять информацию в магазине, и владелец также должен получать информацию о действиях своих конкурентов. Поэтому снова все меняется …! А если у него есть интернет-магазин, и он хочет изменить цены на товары, что ему делать? Для этого ему предоставляются средства, с помощью которых пользователи могут изменять элементы соответствии с потребностями бизнеса. Поэтому, если вы используете онлайн-магазин и хотите внести некоторые изменения, эта система импорта поможет вам справиться с данной задачей. Таким образом, в этой первой части мы создадим форму / интерфейс, через которую пользователь-администратор может загрузить CSV-файл. Для получения дополнительной информации прочитайте статью Создание в OpenCart инструмента экспорта товаров в CSV.
Шаг 1: Добавление ссылки
Откройте файл (путь_к_магазину)/admin/controller/catalog/product.php. Найдите строку кода: $this->data['products'] = array(); Вставьте после нее приведенный ниже код:
$this->data['import_csv'] = $this->url->link('catalog/product/importCSV', 'token=' . $this->session->data['token'] . $url, 'SSL');
$this->data['import_csv'] = $this->url->link('catalog/product/importCSV', 'token=' . $this->session->data['token'] . $url, 'SSL');
(В данном коде мы парсировали ссылку, чтобы ее можно было назначить кнопке)
Шаг 2: Добавление кнопки в представлении
Откройте файл (путь_к_магазину)/admin/view/template/catalog/product_list.tpl. В нем будет размещен HTML-код. Просто найдите класс с именем “button”. В данном классе вы найдете дополнительные кнопки, такие как “insert”, “copy” и т. д. Просто вставьте данный код выше всех остальных кнопок.
<a onclick="location = '<?php echo $import_csv; ?>'" class="button">Import CSV</a>
<a onclick="location = '<?php echo $import_csv; ?>'" class="button">Import CSV</a>
Шаг 3: Функция контроллера
Поскольку выше мы создали кнопку, теперь нам нужно создать публичную функцию в том же файле контроллера, то есть (путь_к_магазину)/admin/controller/catalog/product.php. Имя функции должно совпадать с именем, указанным выше в ссылке. Таким образом, мы создали публичную функцию с именем importCSV(). Внутри функции нужно добавить несколько строк кода.
3.1 Настройка тайтлов и заголовков
$this->document->setTitle('Import CSV');
// настройка тайтла страницы
$this->data['heading_title']="Import CSV"; // парсинг тайтла
$this->document->setTitle('Import CSV');
// настройка тайтла страницы
$this->data['heading_title']="Import CSV"; // парсинг тайтла
3.2 Загрузка модели
Следующая модель загружает модель для дальнейшего использования:
$this->load->model('catalog/product'); //загрузка модели товаров для ипморта
$this->load->model('catalog/product'); //загрузка модели товаров для ипморта
3.3. URL-адреса действия и отмены действия.
Когда мы создаем форму, нам нужно парсировать ссылки «Загрузить» и «Отменить».
$this->data['cancel'] = $this->url->link('catalog/product', 'token=' . $this->session->data['token'] . $url, 'SSL');
// url-адрес отмены
$this->data['action'] = $this->url->link('catalog/product/importCSV', 'token=' . $this->session->data['token'] . $url, 'SSL');
// url-адрес текущей страницы
$this->data['cancel'] = $this->url->link('catalog/product', 'token=' . $this->session->data['token'] . $url, 'SSL');
// url-адрес отмены
$this->data['action'] = $this->url->link('catalog/product/importCSV', 'token=' . $this->session->data['token'] . $url, 'SSL');
// url-адрес текущей страницы
3.4 Хлебные крошки
// Начало хлебных крошек
$this->data['breadcrumbs'] = array();
$this->data['breadcrumbs'][] = array('text' => $this->language->get('text_home'),
'href' => $this->url->link('common/home', 'token=' . $this->session->data['token'], 'SSL'), 'separator' => false);
//ссылка на главную страницу
$this->data['breadcrumbs'][] = array('text' => "Import CSV",
'href' => $this->url->link('catalog/product', 'token=' . $this->session->data['token'] . $url, 'SSL'), 'separator' => ' :: ');
// ссылка на страницу товара
// Конец хлебных крошек
// Начало хлебных крошек
$this->data['breadcrumbs'] = array();
$this->data['breadcrumbs'][] = array('text' => $this->language->get('text_home'),
'href' => $this->url->link('common/home', 'token=' . $this->session->data['token'], 'SSL'), 'separator' => false);
//ссылка на главную страницу
$this->data['breadcrumbs'][] = array('text' => "Import CSV",
'href' => $this->url->link('catalog/product', 'token=' . $this->session->data['token'] . $url, 'SSL'), 'separator' => ' :: ');
// ссылка на страницу товара
// Конец хлебных крошек
3.5 Настройка шаблона
Мы указываем контроллеру отобразить для представления файл import_csv.tpl.
$this->template = 'catalog/import_csv.tpl';
//передаем путь шаблона
// "import_csv.tpl" - это имя шаблона, который мы создадим позже
$this->children = array(
'common/header',
'common/footer');
//вызов футера и хэдера
$this->response->setOutput($this->render());
// отображение представления
$this->template = 'catalog/import_csv.tpl';
//передаем путь шаблона
// "import_csv.tpl" - это имя шаблона, который мы создадим позже
$this->children = array(
'common/header',
'common/footer');
//вызов футера и хэдера
$this->response->setOutput($this->render());
// отображение представления
Шаг 4: Форма загрузки CSV
Теперь нам нужно создать еще один шаблон, который будет отображаться после нажатия кнопки. Нам нужно просто перейти в (путь_к_магазину)/admin/view/template/catalog. Создайте имя файла, например, import_csv.tpl. Откройте шаблон в своей IDE и вставьте в него следующий простой HTML-код.
<div id="content">
<div class="breadcrumb">
<?php foreach ($breadcrumbs as $breadcrumb) { ?>
<?php echo $breadcrumb['separator']; ?>
//отображаем данные хлебных крошек
<a href="<?php echo $breadcrumb['href']; ?>"><?php echo $breadcrumb['text']; ?></a>
<?php } ?>
</div>
<?php if ($success) { ?>
<div class="success"><?php echo $success; ?></div>
<?php } ?>
<?php if ($error_warning) { ?>
<div class="warning"><?php echo $error_warning; ?></div>
<?php } ?>
<div class="box">
<div class="heading">
<h1>
<img src="view/image/product.png" alt="" />
<?php echo $heading_title; ?>
</h1>
<div class="buttons">
<a onclick="$('#form').submit();" class="button">Import</a>
<a onclick="location = '<?php echo $cancel; ?>';" class="button">Cancel</a></div>
</div>
<div class="content">
<form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="form">
<table class="form">
<tr>
<td><span class="required">*</span> CSV</td>
<td><input type="file" name="csv" value="" />
<?php if ($error_csv) { ?>
<span class="error"><?php echo $error_csv; ?></span>
<?php } ?>
</td>
</tr>
</table>
</form>
</div>
</div>
<div id="content">
<div class="breadcrumb">
<?php foreach ($breadcrumbs as $breadcrumb) { ?>
<?php echo $breadcrumb['separator']; ?>
//отображаем данные хлебных крошек
<a href="<?php echo $breadcrumb['href']; ?>"><?php echo $breadcrumb['text']; ?></a>
<?php } ?>
</div>
<?php if ($success) { ?>
<div class="success"><?php echo $success; ?></div>
<?php } ?>
<?php if ($error_warning) { ?>
<div class="warning"><?php echo $error_warning; ?></div>
<?php } ?>
<div class="box">
<div class="heading">
<h1>
<img src="view/image/product.png" alt="" />
<?php echo $heading_title; ?>
</h1>
<div class="buttons">
<a onclick="$('#form').submit();" class="button">Import</a>
<a onclick="location = '<?php echo $cancel; ?>';" class="button">Cancel</a></div>
</div>
<div class="content">
<form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="form">
<table class="form">
<tr>
<td><span class="required">*</span> CSV</td>
<td><input type="file" name="csv" value="" />
<?php if ($error_csv) { ?>
<span class="error"><?php echo $error_csv; ?></span>
<?php } ?>
</td>
</tr>
</table>
</form>
</div>
</div>
Вы можете создать собственный шаблон, приведенный выше код — всего лишь предлагаемый вариант.
Заключение
В этой части руководства мы выполнили несколько действий по созданию «Инструмента импорта». Мы изменили шаблон, создали форму, чтобы пользователю было удобно работать. В следующей части мы продолжим. Эта статья была разделена на части с целью дать вам представление о том, что такое «Макеты» и «Бизнес-логика». В следующей части мы напрямую будем работать с базой данных и импортируем данные соответствующим образом. Благодарю вас за интерес к этому руководству. До следующей статьи!