Jump to content

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


Recommended Posts

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

Возникла потребность сделать импорт товаров с выбором бренда при импорте 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. В чём может быть ошибка?

Link to post
Share on other sites

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

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

brand_id: brand_id,

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

Edited by Drake777
Link to post
Share on other sites
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'
							}),

 

Link to post
Share on other sites

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

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

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

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

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

 

Link to post
Share on other sites

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

Link to post
Share on other sites
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');

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

Link to post
Share on other sites
37 минут назад, Noxter сказал:

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

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

Link to post
Share on other sites

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

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

Edited by ExtraBash
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...