От автора: эта статья является частью серии под названием «Создание в OpenCart инструмента импорта товаров из CSV». Предположим, у вас есть список товаров магазина, цены на которые необходимо обновлять. Но вы ненавидите ручную работу? Вам нужно решение, с помощью которого вы сможете напрямую импортировать список, и все товары и цены на них обновлятся автоматически. Да! Это именно то, что мы собираемся сделать. По умолчанию OpenCart не предоставляет возможности для импорта продуктов из любого внешнего источника, в этом случае нам нужно разработать модуль, который можно будет использовать для импорта.
В нашей предыдущей статье мы экспортировали товары и информацию о них (идентификатор товара, модель, название товара и цену), поэтому, продолжая эту работу, давайте приступим к созданию инструмента, с помощью которого будем производить в OpenCart импорт товара!
Что мы будем создавать?
Мы добавим в OpenCart систему импорта. Как мы знаем, OpenCart — это бесплатное решение для электронной коммерции, которое также позволяет разработчикам настраивать его определенным образом. Давайте рассмотрим магазины. В ходе их работы различные вещи очень часто меняются, например, изменяются количества, цены, описания и т. д.
Для любого бизнеса, чтобы расти, очень важно обновлять информацию в магазине, и владелец также должен получать информацию о действиях своих конкурентов. Поэтому снова все меняется …! А если у него есть интернет-магазин, и он хочет изменить цены на товары, что ему делать? Для этого ему предоставляются средства, с помощью которых пользователи могут изменять элементы соответствии с потребностями бизнеса. Поэтому, если вы используете онлайн-магазин и хотите внести некоторые изменения, эта система импорта поможет вам справиться с данной задачей. Таким образом, в этой первой части мы создадим форму / интерфейс, через которую пользователь-администратор может загрузить CSV-файл. Для получения дополнительной информации прочитайте статью Создание в OpenCart инструмента экспорта товаров в CSV.
Шаг 1: Добавление ссылки
Откройте файл (путь_к_магазину)/admin/controller/catalog/product.php. Найдите строку кода: $this->data[‘products’] = array(); Вставьте после нее приведенный ниже код:
1 |
$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” и т. д. Просто вставьте данный код выше всех остальных кнопок.
1 |
<a onclick="location = '<?php echo $import_csv; ?>'" class="button">Import CSV</a> |
Шаг 3: Функция контроллера
Поскольку выше мы создали кнопку, теперь нам нужно создать публичную функцию в том же файле контроллера, то есть (путь_к_магазину)/admin/controller/catalog/product.php. Имя функции должно совпадать с именем, указанным выше в ссылке. Таким образом, мы создали публичную функцию с именем importCSV(). Внутри функции нужно добавить несколько строк кода.
3.1 Настройка тайтлов и заголовков
1 2 3 |
$this->document->setTitle('Import CSV'); // настройка тайтла страницы $this->data['heading_title']="Import CSV"; // парсинг тайтла |
3.2 Загрузка модели
Следующая модель загружает модель для дальнейшего использования:
1 |
$this->load->model('catalog/product'); //загрузка модели товаров для ипморта |
3.3. URL-адреса действия и отмены действия.
Когда мы создаем форму, нам нужно парсировать ссылки «Загрузить» и «Отменить».
1 2 3 4 |
$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 Хлебные крошки
1 2 3 4 5 6 7 8 9 |
// Начало хлебных крошек $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.
1 2 3 4 5 6 7 8 9 |
$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-код.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
<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> |
Вы можете создать собственный шаблон, приведенный выше код — всего лишь предлагаемый вариант.
Заключение
В этой части руководства мы выполнили несколько действий по созданию «Инструмента импорта». Мы изменили шаблон, создали форму, чтобы пользователю было удобно работать. В следующей части мы продолжим. Эта статья была разделена на части с целью дать вам представление о том, что такое «Макеты» и «Бизнес-логика». В следующей части мы напрямую будем работать с базой данных и импортируем данные соответствующим образом. Благодарю вас за интерес к этому руководству. До следующей статьи!
Автор: Zaman Riaz
Источник: //code.tutsplus.com/
Редакция: Команда webformyself.
Комментарии (2)