Перейти к содержанию
Официальный форум поддержки Simpla

Импорт товаров с выбором бренда при импорте


Рекомендуемые сообщения

Здравствуйте уважаемые форумчане) 

Возникла потребность сделать импорт товаров с выбором бренда при импорте CSV. 

Все необходимые бренды уже созданы.

Добавил в ImportAdmin.php

$brands = $this->brands->get_brands();
$this->design->assign('brands', $brands);

и в условии if($this->request->method('post'))

$brand_id = $this->request->post('brand_id', 'integer');
$this->design->assign('brand_id', $brand_id);

 Далее в файле import.tpl в тегах form

<select name="brand_id" class="form-input">
			<option value="0" data-name="" selected>Не указан</option>
			{foreach $brands as $brand}
				<option value="{$brand->id}" data-name="{$brand->name|escape}">{$brand->name|escape}</option>
			{/foreach}
		</select>

В этом же файле ниже, добавил brand_id: 

function do_import(data, brand_id) {
		$.ajax({
			url: 'ajax/import.php',
			method: 'post',
			data: {
				data: data,
				brand_id: brand_id,
				
			},

Далее в файле import.php (simpla/ajax/import.php)

Закомментировал 

'brand'=>            array('brand', 'бренд'),

и 

if(!empty($item['brand']))
		{
			$item['brand'] = trim($item['brand']);
			// Найдем его по имени
			$this->db->query('SELECT id FROM __brands WHERE name=?', $item['brand']);
			if(!$product['brand_id'] = $this->db->result('id'))
				// Создадим, если не найден
				$product['brand_id'] = $this->brands->add_brand(array('name'=>$item['brand'], 'meta_title'=>$item['brand'], 'meta_keywords'=>$item['brand'], 'meta_description'=>$item['brand']));
		}

и добавил

$product['brand_id'] = $this->request->post('brand_id', 'integer');

Бренды не добавляются. Передаётся  brand_id = 0. В чём может быть ошибка?

Ссылка на сообщение
Поделиться на другие сайты

в  import.tpl в js еще надо определение brand_id

в ajax вы дописали 

brand_id: brand_id,

а что это такое похоже не определили выше

Изменено пользователем Drake777
Ссылка на сообщение
Поделиться на другие сайты
2 часа назад, Drake777 сказал:

в  import.tpl в js еще надо определение brand_id

в ajax вы дописали 


brand_id: brand_id,

а что это такое похоже не определили выше

Прошу прощения, не сначала выложил.  Определение есть. 

{if $filename}
{capture name = 'scripts'}
{literal}
<script>
(function(){
	'use strict';

	var $progressBar = $('.import-progress-bar'),
	    brand_id = '{/literal}{$brand_id}{literal}',
		$progressPercent = $('.import-progress-percent'),
		$result = $('.import-result'),
		$resultCounts = $('.import-result-counts'),
		percent = '0%',
		countAdded = 0,
		countUpdated = 0;

	function do_import(data, brand_id) {
		$.ajax({
			url: 'ajax/import.php',
			method: 'post',
			data: {
				data: data,
				brand_id: brand_id,
				
			},
			dataType: 'json',
			success: function (data) {
				for (var key in data.items)
				{
					console.log(data.items[key])
					var $item = $('<div>', {
						class: 'import-result-item ' + data.items[key].status,
						html: [$('<a>', {
								class: 'import-result-name',
								text: data.items[key].product.name,
								href: 'index.php?module=ProductAdmin&id=' + data.items[key].product.id,
								target: '_blank'
							}),

 

Ссылка на сообщение
Поделиться на другие сайты

Как минимум ошибка в том, что 

14 часов назад, jonny008 сказал:

Далее в файле import.php (simpla/ajax/import.php)

Закомментировал 

'brand'=>            array('brand', 'бренд'),

 

Ссылка на сообщение
Поделиться на другие сайты

А вообще проще всего было просто добавить поле бренда в CSV файле через эксель, и потянуть это поле вниз для всех товаров (если нужно).

Ссылка на сообщение
Поделиться на другие сайты
36 минут назад, Noxter сказал:

data: { data: data, brand_id: $('select[name="brand_id"]').val(), },

Здравствуйте Артём.  Спасибо за подсказку, к сожалению результат тот же brand_id = 0. 

Может я неправильно ловлю в import.php строкой $product['brand_id'] =  $this->request->post('brand_id', 'integer');

Мысли уже закончились) 

Ссылка на сообщение
Поделиться на другие сайты
37 минут назад, Noxter сказал:

А вообще проще всего было просто добавить поле бренда в CSV файле через эксель, и потянуть это поле вниз для всех товаров (если нужно).

30 разных файлов и все без указания "Бренд", в каждом по 10000 строк. Для меня, было бы проще выбрать в выпадающем списке.

Ссылка на сообщение
Поделиться на другие сайты

Довожу до сведения форума, товарищ обратился, договоренность об оплате не выполнил. На сообщения не отвечает.

Его телеграмм - @promedia_website

Изменено пользователем ExtraBash
Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...