Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Модуль Модуль обмена для opencart v2.3 по стандарту CommerceML [Поддержка]


Recommended Posts

2 часа назад, tim21701 сказал:

Система стоит "голая" не установлено ни одного дополнения - всё "из коробки".

 

 "Какие ваши доказательства?!!!"    ))))))))))))))))))))))) 

 

Таблицу product_description проверьте .

Змінено користувачем Demon85
Надіслати
Поділитися на інших сайтах

2 часа назад, Demon85 сказал:

 "Какие ваши доказательства?!!!"    ))))))))))))

Я уже слишком стар для этого д*рьма )))))
 

2 часа назад, Gmp сказал:

есть другие проблемы?


В остальном нет, разве что сосед достал))
Товар импортируется отлично, (закидывал по крону). База с 17к товарами проглатывает на ура.
Вот бы еще мета починить - было бы совсем отлично, а то настройки есть а они не работают. Тупо всё сыпется в duplicate entry.
 

Спойлер

product_desc.thumb.png.d0bdb947726470118784dee5d141d750.png

 

Надіслати
Поділитися на інших сайтах

В 14.11.2020 в 04:58, 26rus сказал:

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

Помогите пожалуйста )

 

   Я так и не смог понять по вашим постам . 

У вас &QUOT   вставляется в названия товара и производителя или при генерации SEO url в ЧПУ ссылку ? 

Надіслати
Поділитися на інших сайтах

3 часа назад, Demon85 сказал:

 

   Я так и не смог понять по вашим постам . 

У вас &QUOT   вставляется в названия товара и производителя или при генерации SEO url в ЧПУ ссылку ? 

когда выгрузку делаю с 1с, то в производителей выводится этот иероглиф. Еще заметил когда пишешь описание в 1с и жмешь enter с новой строки то там фигня выходит \n1 почему-то _-_ 

Еще проблема подключил simple модуль, ну и в 1с не показывает доставка почему-то _-_ может кто подправил это может скинуть решение по 3 проблемам??

Змінено користувачем 26rus
Надіслати
Поділитися на інших сайтах


23 часа назад, 26rus сказал:

когда выгрузку делаю с 1с, то в производителей выводится этот иероглиф.

 

Я сразу извиняюсь , не хочу вас обидеть . Вы русский язык хорошо понимаете ? Я у вас уточняю , а вы мне одно и тоже пишете . 

 

Цитата

то в производителей выводится этот иероглиф.

 

Где именно , в поле Название категории или в поле SEO URL  ?

Надіслати
Поділитися на інших сайтах

51 минуту назад, Demon85 сказал:

 

Я сразу извиняюсь , не хочу вас обидеть . Вы русский язык хорошо понимаете ? Я у вас уточняю , а вы мне одно и тоже пишете . 

 

 

Где именно , в поле Название категории или в поле SEO URL  ?

в название категории

Надіслати
Поділитися на інших сайтах


3 минуты назад, 26rus сказал:

в название категории

 

Ну эта функция , которую вы пытались изменить :
 

В 24.11.2020 в 11:15, 26rus сказал:

А код вот так


private function translit($s, $space = '-') {

 

Она отвечает за SEO часть . Транслиетрирует RUS->ENG. Советую вам всё вернуть назад и копать в другом месте кода .
 

Надіслати
Поділитися на інших сайтах

17 минут назад, Demon85 сказал:

 

Ну эта функция , которую вы пытались изменить :
 

 

Она отвечает за SEO часть . Транслиетрирует RUS->ENG. Советую вам всё вернуть назад и копать в другом месте кода .
 

такс, вот смотрите может вы не поняли меня. Заходишь в производители во вкладку и там вот список вылетает производителей и там где написан к примеру "Яндекс" с кавычками то он выдает ероглифы вот так &QUOTЯндекс&QUOT.

 

А eng язык удалил вообще с магазина

Змінено користувачем 26rus
Надіслати
Поділитися на інших сайтах


13 минут назад, 26rus сказал:

с кавычками то он выдает ероглифы вот так &QUOTЯндекс&QUOT.

 

У вас в 1С названия    Производителя  или   Категории    "Яндекс"   ?

Змінено користувачем Demon85
Надіслати
Поділитися на інших сайтах

19 минут назад, Demon85 сказал:

 

У вас в 1С названия    Производителя  или   Категории    "Яндекс"   ?

производитель именно. Заходишь в производитель - там весь список производителей. И там текст производителя выдает &QUOTЯндекс&QUOT. 

 

Не seo url , я про url слово не говорил.

Надіслати
Поділитися на інших сайтах


12 минут назад, 26rus сказал:

производитель именно

 

Уже легче . Надо будет найти место в коде где идёт запись из .XML файла в БД этих самых производителей , которые у вас идут в двойных кавычках .

Надіслати
Поділитися на інших сайтах

36 минут назад, Demon85 сказал:

 

Уже легче . Надо будет найти место в коде где идёт запись из .XML файла в БД этих самых производителей , которые у вас идут в двойных кавычках .

??? это где и что нужно поменять?)

Змінено користувачем 26rus
Надіслати
Поділитися на інших сайтах


Господа Товарищи, а как подтянуть "файлы" которые в 1С прикреплены к товару? Здесь это не реализовано? :shock:
Модуль обмена из 1С их выгружает, но этот модуль я так полагаю их вообще игнорирует? Или как их на страницу товара то выводить, прям беда-дела!

В одной из Категорий в 1С ко всем товарам прикреплен pdf-файл с сертификатами (+ ГОСТы), и на сайте они быть просто обязаны, ан нЭту! (( Это чтож, теперь к 1,5к товарам вручную документы прописывать?)) 

Надіслати
Поділитися на інших сайтах

Не выгружаются новые позиции. хотя старые все обноляются. В 1с стоит как положено все разрешения- Выгрузка на сайт описания на сайт . В самом модуле разрешения стоят на выгрузке новых позиций. Подскажите в чем может быть проблема.

Надіслати
Поділитися на інших сайтах


В 27.11.2020 в 16:02, 26rus сказал:

??? это где и что нужно поменять?)

 

Для Категорий


Откройте файл по пути  admin/model/extension/exchange1c.php  и найдите там функцию
 

Спойлер

 


/**
	 * ver 9
	 * update 2018-06-11
	 * Парсит группы в классификаторе в XML
	 */
	private function parseClassifierCategories($xml, $parent_id = 0, &$num_categories) {

		foreach ($xml->Группа as $xml_category) {
			if ($xml_category->Ид && $xml_category->Наименование) {

				$num_categories++;

				$guid = (string)$xml_category->Ид;

				$category_id = isset($this->CATEGORIES[$guid]) ? $this->CATEGORIES[$guid]['category_id'] : 0;

				$data = array(
					'parent_id'		=> $parent_id,
					'name'			=> htmlspecialchars(trim((string)$xml_category->Наименование), ENT_NOQUOTES, 'UTF-8'),
					'version'		=> $xml_category->НомерВерсии ? (string)$xml_category->НомерВерсии : "",
					'guid'			=> $guid
				);

				// Сортировка категории (по просьбе Val)
				if ($xml_category->Сортировка) {
					$data['sort_order']	= (int)$xml_category->Сортировка;
				}

				// Картинка категории (по просьбе Val)
				if ($xml_category->Картинка) {
					$data['image']		= (string)$xml_category->Картинка;
				}

				// Если пометка удаления есть, значит будет отключен
				if ((string)$xml_category->ПометкаУдаления == 'true') {
					$data['status']		= 0;
				} elseif ($category_id && $this->config->get('exchange1c_category_exist_status_enable') == 1) {
					// Включить существующие категории
					$data['status'] = 1;
				}

				if ($category_id) {
					// Прочитаем данные существующей категории
					$this->updateCategory($category_id, $data);
					$this->CATEGORIES[$guid]['update'] = true;

				} else {

					if ($this->config->get('exchange1c_category_new_no_create') == 1) {
						$this->log("Включен запрет на создание новых категорий", 2);
						continue;

					} else {

						//$this->log($data, 2);
						$category_id = $this->addCategory($data);

						$this->CATEGORIES[$guid] = array(
							'category_id'	=> $category_id,
							'version'		=> $data['version'],
							'update'		=> true
						);
					}
				}
			} // if ($xml_category->Ид && $xml_category->Наименование)

			if ($xml_category->Группы) {
				$this->parseClassifierCategories($xml_category->Группы, $category_id, $num_categories);
				if ($this->ERROR) return false;
			}

			$this->log("Категория: '" . $data['name'] . "'");

		} // foreach

		return true;

	} // parseClassifierCategories()

 

 

 

 

в этой функции я поменял строку : 

'name'            => htmlspecialchars(trim((string)$xml_category->Наименование)),

на : 

'name'            => htmlspecialchars(trim((string)$xml_category->Наименование), ENT_NOQUOTES, 'UTF-8'),

 

 

 

Вот для производителя
 

Ищем функцию : 

 

Откройте файл по пути  admin/model/extension/exchange1c.php  и найдите там функцию
 

Спойлер

/**
	 * ver 4
	 * update 2018-05-09
	 * Читает реквизиты товара из XML в массив данных
	 */
	private function parseRequisite($xml, &$data) {

		$this->log("Начато чтение реквизитов...", 2);
		//$this->log($xml, 2);
		$count = 0;
		foreach ($xml->ЗначениеРеквизита as $requisite) {
			//$this->log($requisite, 2);
			$count	++;
			$name 	= trim((string)$requisite->Наименование);
			$value 	= trim((string)$requisite->Значение);

			switch ($name){
				case 'Вес':
					$data['weight'] = $value ? (float)str_replace(',','.',$value) : 0;
					$this->log("> Реквизит: " . $name. " => weight",2);
				break;
				case 'ОписаниеВФорматеHTML':
					if ($value && $this->config->get('exchange1c_product_description_no_import') != 1) {
						$data['description'] =  $value;
						$this->log("> Реквизит: " . $name, 2);
					}
				break;
				case 'Полное наименование':
					if ($value && $this->config->get('exchange1c_product_name') == 'fullname') {
						$data['name'] = htmlspecialchars($value);
						$this->log("Наименование товара установлено из реквизита: " . $name . " = " . $value, 2);
					}
				break;
				case 'Производитель':
					// Устанавливаем производителя из свойства только если он не был еще загружен в секции Товар
					if ($this->config->get('exchange1c_product_manufacturer_no_change') == 0 && empty($data['manufacturer_id'])) {
						$data['manufacturer_name'] = htmlspecialchars($value, ENT_NOQUOTES, 'UTF-8');
						$data['manufacturer_id'] = $this->setManufacturer($data['manufacturer_name']);
						$this->log("> Реквизит: " . $name . " = " . $data['manufacturer_name'], 2);
					}
				break;
				case 'Код':
					$data['code'] = $this->parseCode($value);
					$this->log("> Реквизит: " . $name . " преобразован в " . $data['code'], 2);
				break;
				case 'ISBN':
					$data['isbn'] = htmlspecialchars($value);
					$this->log("> Реквизит: " . $name . " = " . $data['isbn'], 2);
				break;
			} // switch
		} // foreach()

		$this->log("Реквизитов прочитано: " . $count, 2);

	} // parseRequisite()

 

 

 

в этой функции я поменял строку : 

$data['manufacturer_name'] = htmlspecialchars($value);

на : 

$data['manufacturer_name'] = htmlspecialchars($value, ENT_NOQUOTES, 'UTF-8');

Змінено користувачем Demon85
  • +1 2
Надіслати
Поділитися на інших сайтах

2 часа назад, Demon85 сказал:

 

Для Категорий


Откройте файл по пути  admin/model/extension/exchange1c.php  и найдите там функцию
 

  Показать контент

 



/**
	 * ver 9
	 * update 2018-06-11
	 * Парсит группы в классификаторе в XML
	 */
	private function parseClassifierCategories($xml, $parent_id = 0, &$num_categories) {

		foreach ($xml->Группа as $xml_category) {
			if ($xml_category->Ид && $xml_category->Наименование) {

				$num_categories++;

				$guid = (string)$xml_category->Ид;

				$category_id = isset($this->CATEGORIES[$guid]) ? $this->CATEGORIES[$guid]['category_id'] : 0;

				$data = array(
					'parent_id'		=> $parent_id,
					'name'			=> htmlspecialchars(trim((string)$xml_category->Наименование), ENT_NOQUOTES, 'UTF-8'),
					'version'		=> $xml_category->НомерВерсии ? (string)$xml_category->НомерВерсии : "",
					'guid'			=> $guid
				);

				// Сортировка категории (по просьбе Val)
				if ($xml_category->Сортировка) {
					$data['sort_order']	= (int)$xml_category->Сортировка;
				}

				// Картинка категории (по просьбе Val)
				if ($xml_category->Картинка) {
					$data['image']		= (string)$xml_category->Картинка;
				}

				// Если пометка удаления есть, значит будет отключен
				if ((string)$xml_category->ПометкаУдаления == 'true') {
					$data['status']		= 0;
				} elseif ($category_id && $this->config->get('exchange1c_category_exist_status_enable') == 1) {
					// Включить существующие категории
					$data['status'] = 1;
				}

				if ($category_id) {
					// Прочитаем данные существующей категории
					$this->updateCategory($category_id, $data);
					$this->CATEGORIES[$guid]['update'] = true;

				} else {

					if ($this->config->get('exchange1c_category_new_no_create') == 1) {
						$this->log("Включен запрет на создание новых категорий", 2);
						continue;

					} else {

						//$this->log($data, 2);
						$category_id = $this->addCategory($data);

						$this->CATEGORIES[$guid] = array(
							'category_id'	=> $category_id,
							'version'		=> $data['version'],
							'update'		=> true
						);
					}
				}
			} // if ($xml_category->Ид && $xml_category->Наименование)

			if ($xml_category->Группы) {
				$this->parseClassifierCategories($xml_category->Группы, $category_id, $num_categories);
				if ($this->ERROR) return false;
			}

			$this->log("Категория: '" . $data['name'] . "'");

		} // foreach

		return true;

	} // parseClassifierCategories()

 

 

 

 

в этой функции я поменял строку : 

'name'            => htmlspecialchars(trim((string)$xml_category->Наименование)),

на : 

'name'            => htmlspecialchars(trim((string)$xml_category->Наименование), ENT_NOQUOTES, 'UTF-8'),

 

 

 

Вот для производителя
 

Ищем функцию : 

 

Откройте файл по пути  admin/model/extension/exchange1c.php  и найдите там функцию
 

  Показать контент


/**
	 * ver 4
	 * update 2018-05-09
	 * Читает реквизиты товара из XML в массив данных
	 */
	private function parseRequisite($xml, &$data) {

		$this->log("Начато чтение реквизитов...", 2);
		//$this->log($xml, 2);
		$count = 0;
		foreach ($xml->ЗначениеРеквизита as $requisite) {
			//$this->log($requisite, 2);
			$count	++;
			$name 	= trim((string)$requisite->Наименование);
			$value 	= trim((string)$requisite->Значение);

			switch ($name){
				case 'Вес':
					$data['weight'] = $value ? (float)str_replace(',','.',$value) : 0;
					$this->log("> Реквизит: " . $name. " => weight",2);
				break;
				case 'ОписаниеВФорматеHTML':
					if ($value && $this->config->get('exchange1c_product_description_no_import') != 1) {
						$data['description'] =  $value;
						$this->log("> Реквизит: " . $name, 2);
					}
				break;
				case 'Полное наименование':
					if ($value && $this->config->get('exchange1c_product_name') == 'fullname') {
						$data['name'] = htmlspecialchars($value);
						$this->log("Наименование товара установлено из реквизита: " . $name . " = " . $value, 2);
					}
				break;
				case 'Производитель':
					// Устанавливаем производителя из свойства только если он не был еще загружен в секции Товар
					if ($this->config->get('exchange1c_product_manufacturer_no_change') == 0 && empty($data['manufacturer_id'])) {
						$data['manufacturer_name'] = htmlspecialchars($value, ENT_NOQUOTES, 'UTF-8');
						$data['manufacturer_id'] = $this->setManufacturer($data['manufacturer_name']);
						$this->log("> Реквизит: " . $name . " = " . $data['manufacturer_name'], 2);
					}
				break;
				case 'Код':
					$data['code'] = $this->parseCode($value);
					$this->log("> Реквизит: " . $name . " преобразован в " . $data['code'], 2);
				break;
				case 'ISBN':
					$data['isbn'] = htmlspecialchars($value);
					$this->log("> Реквизит: " . $name . " = " . $data['isbn'], 2);
				break;
			} // switch
		} // foreach()

		$this->log("Реквизитов прочитано: " . $count, 2);

	} // parseRequisite()

 

 

 

в этой функции я поменял строку : 

$data['manufacturer_name'] = htmlspecialchars($value);

на : 

$data['manufacturer_name'] = htmlspecialchars($value, ENT_NOQUOTES, 'UTF-8');

а то что описание идет к примеру пишу текст и потом пишу с новом строки описание товара в 1с и потом выгружаю и текст идет так мой текст /n вот это не понятно это где исправить можно? и второй вопрос в комментарии не пишет в выгрузках товара "Адрес доставки" стоит модуль симпл и тут можете помочь плиз??

ну и также я поменял на это что вы скинули, тоже самое выходит производитель "ООО "Яндекс""

Змінено користувачем 26rus
Надіслати
Поділитися на інших сайтах


25 минут назад, 26rus сказал:

ну и также я поменял на это что вы скинули, тоже самое выходит производитель "ООО "Яндекс""

 

 Скиньте ваш файл xml .

Надіслати
Поділитися на інших сайтах

1 минуту назад, Demon85 сказал:

 

 Скиньте ваш файл xml .

а где он находится файл xml ???думаю этот

exchange1c.php

Змінено користувачем 26rus
Надіслати
Поділитися на інших сайтах


3 минуты назад, 26rus сказал:

а где он находится файл xml ???думаю этот

 

В 1С сделайте выгрузку не на сайт , а  в папку . Там появятся два файла. Нам нужен import.xml 

Змінено користувачем Demon85
Надіслати
Поділитися на інших сайтах

1 минуту назад, Demon85 сказал:

 

В 1С сделайте выгрузку не на сайт , а  в папку . Там появятся два файла. Нам нужен import.xml 

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

Надіслати
Поділитися на інших сайтах


10 часов назад, Demon85 сказал:

Можно образец


канешь)
https://yadi.sk/d/qBWbbelf4iXWPw

Сертификат в PDF прикреплен в номенклатуре 1С к товару, но (при ручной выгрузке) на сайте его нет.
Ни на странице товара (вкладка Связи > Загрузки), ни ссылки в Описании товара. Вообще ничего.
Такое впечатление, что прикрепление файлов к товару в модуле просто не реализовано. :(
У почти 1,5к товаров они должны быть выложены, и как теперь с этим быть - просто ума не приложу...

пример файла import.xml: (pdf в папке import_files/2b присутствует)

Спойлер

pdf_not_import.thumb.jpg.ea46814948aa76b2789ae31b36c00600.jpg


скрины:

Спойлер

product_page_wishout_pdf.jpg.5fd46dbb4219ff2aa5b2ce38ba466879.jpg

no_download_pdf.jpg.2b41af4335101065411709b81520c3fa.jpg

description_no_link_pdf.jpg.9933b9dc304296fab7b0639e0a8d3612.jpg

 

Надіслати
Поділитися на інших сайтах

  • dinox changed the title to Модуль обмена для opencart v2.3 с учетной системой по стандарту CommerceML [Поддержка]

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.