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

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

Всем доброго времени суток стоит задача импортировать прайс лист csv формата в симплу. Что-то я адаптировал под симплу, что-то в ручную просто повставлял. В качестве адреса страницы взял артикул.


Осталась только одна проблема, в магазине есть категории с дочерними категориями, например крупнобытовая техника/холодильники, а прайс поставщика изначально подразумевает только дочернюю категории "Холодильники". Подскажите, как можно реализовать чтобы товары заносились в категорию крупонобытовая техника/холодильники, а не создавал новую "главную" категорию "холодильники" так как таких подкатегорий очень много и нужно раскидать их по главным категориям.

Думал над возможностью написания макроса в excel где будет сопоставление по названиям категорий и под категорий, типа если в ячейке "категория" написано холодильники (категория которую может предоставить поставщик) то эта ячейка заменяется на крупнобытовая техника/холодильники.

 

Возможно у вас есть свои варианты решения данной задачи? Подскажите как можно реализовать. Во вложениях прилагаю формат прайс листа который предоставляет поставщик

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

 

В качестве адреса страницы взял артикул

нужно просто удалить колонку адрес, тогда адрес будет автоматически сгенерирован на основе имени товара.

 

+ вы не добавили в прайс названия колонок в первой строке

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

нужно просто удалить колонку адрес, тогда адрес будет автоматически сгенерирован на основе имени товара.

 

+ вы не добавили в прайс названия колонок в первой строке

Это прайс поставщика, в таком виде он его предоставляет, надо было конечно добавить что бы нагляднее было, сейчас перезалью

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

нужно просто удалить колонку адрес, тогда адрес будет автоматически сгенерирован на основе имени товара.

 

+ вы не добавили в прайс названия колонок в первой строке

а что можете подсказать по поводу решения задачи с подкатегориями?

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

 

Осталась только одна проблема, в магазине есть категории с дочерними категориями, например крупнобытовая техника/холодильники, а прайс поставщика изначально подразумевает только дочернюю категории "Холодильники". Подскажите, как можно реализовать чтобы товары заносились в категорию крупонобытовая техника/холодильники, а не создавал новую "главную" категорию "холодильники" так как таких подкатегорий очень много и нужно раскидать их по главным категориям.

все сделано на самом деле правильно, т.к. может быть две категории например Холодильники, одна корневая а другая подкатегория. 

 

есть несколько выходов из ситуации

- проставить вручную эти корневые категории в прайсе и все будет импортировать

- если у вас нет категорий с одинаковыми именами (корневой и подкатегорий) можно переделать импорт чтобы искало только по названию и в эту категорию и вставляло.

- добавлять еще в прайс айди категории и по ней цеплять товар к категории. что тоже требует изменения импорта

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

все сделано на самом деле правильно, т.к. может быть две категории например Холодильники, одна корневая а другая подкатегория. 

 

есть несколько выходов из ситуации

- проставить вручную эти корневые категории в прайсе и все будет импортировать

- если у вас нет категорий с одинаковыми именами (корневой и подкатегорий) можно переделать импорт чтобы искало только по названию и в эту категорию и вставляло.

- добавлять еще в прайс айди категории и по ней цеплять товар к категории. что тоже требует изменения импорта

как можно воплотить в жизнь второй вариант? нет категорий, имена которых, совпадают с подкатегориями

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

попробуйте заменить в simpla/ajax/import.php функцию private function import_category($category)

на мою:

 

private function import_category($category)
{			
	// Поле "категория" может состоять из нескольких имен, разделенных subcategory_delimiter-ом
	// Только неэкранированный subcategory_delimiter может разделять категории
	$delimiter = $this->subcategory_delimiter;
	$regex = "/\\DELIMITER((?:[^\\\\\DELIMITER]|\\\\.)*)/";
	$regex = str_replace('DELIMITER', $delimiter, $regex);
	$names = preg_split($regex, $category, 0, PREG_SPLIT_DELIM_CAPTURE);
	$id = null;   
	$parent = 0; 
	
	// получаем последнюю категорию товара в цепочке и ищем ее в каталоге
	$last_cat = end($names);
	$this->db->query('SELECT id FROM __categories WHERE name=?', $last_cat);
	$id = $this->db->result('id');

	// если мы нашли категорию, сразу возвращаем ее айди, если нет, добавляем категорию по иерархии
	if(empty($id)) {
		// Для каждой категории
		foreach($names as $name)
		{
			// Заменяем \/ на /
			$name = trim(str_replace("\\$delimiter", $delimiter, $name));
			if(!empty($name))
			{
				// Найдем категорию по имени
				$this->db->query('SELECT id FROM __categories WHERE name=? AND parent_id=?', $name, $parent);
				$id = $this->db->result('id');
				
				// Если не найдена - добавим ее
				if(empty($id))
					$id = $this->categories->add_category(array('name'=>$name, 'parent_id'=>$parent, 'meta_title'=>$name,  'meta_keywords'=>$name,  'meta_description'=>$name, 'url'=>$this->translit($name)));

				$parent = $id;
			}	
		}
	}
	return $id;
}

работает так: выбирает последнюю категорию в цепочке (если указана главная и субкатегории), если такая категория найдена по имени, возвращает сразу айди этой категории и вставляет туда товар. если категория не найдена, она добавляется с учетом указанной иерархии в импорте (так как по умолчанию).

 

тоесть, если у вас указано у товара1 категория Коляски/Аксессуары, а у товара2 просто Аксессуары оба тавара добавит в категорию Коляски/Аксессуары, учтите, одинаковых имен быть не должно, иначе добавит в первую что найдена.

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

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

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

попробуйте заменить в simpla/ajax/import.php функцию private function import_category($category)

на мою:

 

private function import_category($category)
{			
	// Поле "категория" может состоять из нескольких имен, разделенных subcategory_delimiter-ом
	// Только неэкранированный subcategory_delimiter может разделять категории
	$delimiter = $this->subcategory_delimiter;
	$regex = "/\\DELIMITER((?:[^\\\\\DELIMITER]|\\\\.)*)/";
	$regex = str_replace('DELIMITER', $delimiter, $regex);
	$names = preg_split($regex, $category, 0, PREG_SPLIT_DELIM_CAPTURE);
	$id = null;   
	$parent = 0; 
	
	// получаем последнюю категорию товара в цепочке и ищем ее в каталоге
	$last_cat = end($names);
	$this->db->query('SELECT id FROM __categories WHERE name=?', $last_cat);
	$id = $this->db->result('id');

	// если мы нашли категорию, сразу возвращаем ее айди, если нет, добавляем категорию по иерархии
	if(empty($id)) {
		// Для каждой категории
		foreach($names as $name)
		{
			// Заменяем \/ на /
			$name = trim(str_replace("\\$delimiter", $delimiter, $name));
			if(!empty($name))
			{
				// Найдем категорию по имени
				$this->db->query('SELECT id FROM __categories WHERE name=? AND parent_id=?', $name, $parent);
				$id = $this->db->result('id');
				
				// Если не найдена - добавим ее
				if(empty($id))
					$id = $this->categories->add_category(array('name'=>$name, 'parent_id'=>$parent, 'meta_title'=>$name,  'meta_keywords'=>$name,  'meta_description'=>$name, 'url'=>$this->translit($name)));

				$parent = $id;
			}	
		}
	}
	return $id;
}

работает так: выбирает последнюю категорию в цепочке (если указана главная и субкатегории), если такая категория найдена по имени, возвращает сразу айди этой категории и вставляет туда товар. если категория не найдена, она добавляется с учетом указанной иерархии в импорте (так как по умолчанию).

Показать

тоесть, если у вас указано у товара1 категория Коляски/Аксессуары, а у товара2 просто Аксессуары оба тавара добавит в категорию Коляски/Аксессуары, учтите, одинаковых имен быть не должно, иначе добавит в первую что найдена.

огромнейшее спасибо, испытал моральный оргазм после того как увидел что товары сели сразу в дочернюю категорию и не стали создавать новую)

Пользуясь случаем хотел спросить, возможно есть решение по данной проблеме http://www.screencapture.ru/file/2e89c003

Брендов много, и не красиво смотрится такое количество на главной странице, а вообще как с вами можно связаться? Есть несколько задач по интернет-магазину на симпле, не могу найти проггера, естественно на платной основе

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

 

http://www.screencap...u/file/2e89c003

Брендов много, и не красиво смотрится такое количество на главной странице, а вообще как с вами можно связаться? Есть несколько задач по интернет-магазину на симпле, не могу найти проггера, естественно на платной основе

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

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

Возможно у вас есть свои варианты решения данной задачи? Подскажите как можно реализовать. Во вложениях прилагаю формат прайс листа который предоставляет поставщик

Приходилось пару раз заниматься подобными задачами. Сложился такой подход:

1. Формируется, например, текстовый файл, с правилами для подмены категорий в виде строк вида

Холодильники; крупнобытовая техника/холодильники

Телевизопы; Электроника/телевизоры

2. При импорте подменяются названия поставщика (первое название в строке) на  нужные названия (второе название в строке).

 

Плюсы подхода:

1. Изменения в скрипте импорта довольно простые и не затрагивают основной функционал.

2. Нет никаких ограничений типа уникальности имен категорий, что является недостатком предложенного ранее метода.

3. Способ позволяет более гибкую работу по преобразованию имен категорий от поставщика.

4. В частности, можно переименовывать категории поставщика.

5. В частности, можно "склеивать" две разные категории поставщика в одну категорию на своем сайте.

6. Способ позволяет не только  легко менять правила преобразования категорий, но и делать правила РАЗНЫМИ для разных поставщиков, просто создав несколько разных файлов правил и выбирая нужный файл при импорте.

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

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

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

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

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

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

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

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

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

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