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

Recommended Posts

Перед покупкой интересует вопрос. Может этот модуль импортировать данные из xml файла формата Яндекс маркет (yml) ? Если нет, то когда это будет реализовано? (p.s. Интересует не только сама возможность импортировать новые товары, но и возможность обновлять цены из такого xml формата)

 

Спасибо.

Ужасный формат.

Уже пытался в нем разобраться.... :(

Может быть существует, какая-то программа преобразования его в нормальный Эксель-файл?

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

Что то Автор модуля никак не проявляется. Давненько его избушки не было видно!  :-D   Часом руки на себя не наложил из-за всех наших вопросов ?! :ugeek:  :ugeek:  :ugeek:

А вы скажите: "Избушка, избушка, повернись к лесу задом, а ко мне передом" :)

 

И я тут, как тут.

Вот запущу магазин, буду здесь чаще.

Уже почти все закончил, осталось накрутку настроить.

 

На все вопросы стараюсь ответить.

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

Ужасный формат.

Уже пытался в нем разобраться.... :(

Может быть существует, какая-то программа преобразования его в нормальный Эксель-файл?

Да решения-то, есть. Но, тут дело в "многоступенчатости". Сначала скачать файл одним инструментом, вторым преобразовать, третьим импортировать на сайт. Мне нужно "коробочное" решение.

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


Руками вставьте эту getAllCategories() в vq2_admin_model_catalog_category

 

Вот она:

public function getAllCategories() {
        $category_data = $this->cache->get('category.all.' . $this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id'));

        if (!$category_data || !is_array($category_data)) {
            $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_description cd ON (c.category_id = cd.category_id) LEFT JOIN " . DB_PREFIX . "category_to_store c2s ON (c.category_id = c2s.category_id) WHERE cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "'  ORDER BY c.parent_id, c.sort_order, cd.name");

            $category_data = array();
            foreach ($query->rows as $row) {
                $category_data[$row['parent_id']][$row['category_id']] = $row;
            }

            $this->cache->set('category.all.' . $this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id'), $category_data);
        }

        return $category_data;
    }

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

1. Заметил, что при обновлении каталога, не добавляются акции к существующим товарам.

 

2. Будет ли функционал работы с категориями и производителями?

(Пакетное добавление с описанием и всеми тегами.)

В смысле "Акционные цены"?

Как бы делал, должно работать. По крайней мере заказчик не жаловался.

 

2. Производители уже создаются (со всеми СЕО).

Категории будут тоже создаваться в 5.0 со всеми СЕО и вложенностями до самой верхней категории (которую все же придется создать руками).

Но называться они будут, как в прайс-листе :(

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

В смысле "Акционные цены"?

Как бы делал, должно работать. По крайней мере заказчик не жаловался.

 

2. Производители уже создаются (со всеми СЕО).

Категории будут тоже создаваться в 5.0 со всеми СЕО и вложенностями до самой верхней категории (которую все же придется создать руками).

Но называться они будут, как в прайс-листе :(

Если товар уже есть в базе, то акция к нему не добавляется, если товаре еще нет в базе, то все норм.

То есть, сегодня появился новый прайс, в котором есть акции, но эти акции не добавляются к имеющемся товарам.

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


У меня на сайте та же история, пришлось в название ставить в скобках артикул.

Теперь еще вручную к каждому товару артикул добавлять? Бред какой то. В описании вроде автоматически подставление артикла в урл. Разве не так? Тогда было бы проще вручную и добавлять их и прописывать по-человечески урлы. Сделайте что-нибудь, чтобы решить этот вопрос, ведь если ЧПУ отключить, то все товары нормально открываются и имеют собственные урлы

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


А что это за ошибка Fatal error: Maximum execution time of 30 seconds exceeded in Z:\home\*******\www\admin\model\catalog\suppler.php on line 1993

 

с 1993 строки suppler

$head = curl_exec($ch);
		if($head === false) {
			$s=curl_error($ch);	
			$err = " curl error head = " . $s ." \n";
			$this->adderr($err);
			
		}
Надіслати
Поділитися на інших сайтах


Так точно.

Решил, что у вас Опенкарт :)

 

Давайте узнаем, в каком же файле вашего движка  находится эта функция.

Сделайте поиск по названию getAllCategories по всем файлам движка (искать по содержимому).

 

Нас интересует ...../model/...

 

Поиск показал три результата:

/admin/controller/catalog/suppler.php
/admin/controller/module/parserj.php
/vqmod/vqcache/vq2_admin_model_catalog_categiry.php - этот файл сделал по Вашей прошлой рекомендации.
 
В .../model/... ничего нет.
Надіслати
Поділитися на інших сайтах


Да, получается, как-то не очень удобно.

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

 

Как-то не подумал об этом. тоже интересное решение.

А как это можно придумать без отключения товаров. чисто теоритически

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


Народ кто знает, подскажите.

Если прайс не менялся, но поменялся курс поставщика доллар/нац валюта, к тому же есть часть товара которую завожу вручную. Чтобы не запускать модуль (цены в прайсе указаны в долларах) хочу воспользоваться стандартными возможностями OpenCart по изменению курса Система-Локализация-Валюты. Но если там менять курс, то меняется цена не в нац валюте, а в долларах, так как валюта по умолчанию установлена - нац.валюта, а надо бы наоборот. А если ставить по умолчанию доллар, то при заходе в магазин показывает доллар и на нац валюту необходимо переключаться - это неудобно. Как сделать чтобы по умолчанию была нац валюта, но при изменении курса доллар/нац валюта средствами  OpenCart, менялась цена в нац валюте (т.е. доллар бы выступал базовой валютой) ?

 

Или на крайний случай, как вывести цену в обоих валютах одновременно в карточке товара ? Тогда валюту по умолчанию можно будет ставить доллар (всё равно отражаться будет цена в обоих валютах).

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


Если товар уже есть в базе, то акция к нему не добавляется, если товаре еще нет в базе, то все норм.

То есть, сегодня появился новый прайс, в котором есть акции, но эти акции не добавляются к имеющемся товарам.

Отправил в ЛС, как исправить.

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

Теперь еще вручную к каждому товару артикул добавлять? Бред какой то. В описании вроде автоматически подставление артикла в урл. Разве не так? Тогда было бы проще вручную и добавлять их и прописывать по-человечески урлы. Сделайте что-нибудь, чтобы решить этот вопрос, ведь если ЧПУ отключить, то все товары нормально открываются и имеют собственные урлы

Да, в урл артикул добавлялся, и код товара добавлялся тоже.

Но начались проблемы, народ стал писать гневные посты, типа:

- уберите;

- оставьте.

 

Решил дать возможность каждому решать этот вопрос самостоятельно.

Найдите поиском в admin/model/catalog/suppler

 

// SEO URL

 

Там увидите закоментированные строки - готовые решения.

Откройте, какую вам нужно.

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

В ошибке пишут следующее: Notice: Undefined variable: addattr in /home/my host/public_html/my domen/admin/model/catalog/suppler.php on line 3977

Обновите admin/model/catalog/suppler - она пропадет.

Это я в 4.10 вбабахал парсинг атрибутов из 5.0 и забыл, что в 4 нет параметра "Создавать атрибуты автоматически" (addattr)

 

Это на работу модуля не должно влиять

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

 

А что это за ошибка Fatal error: Maximum execution time of 30 seconds exceeded in Z:\home\*******\www\admin\model\catalog\suppler.php on line 1993

 

с 1993 строки suppler

$head = curl_exec($ch);
		if($head === false) {
			$s=curl_error($ch);	
			$err = " curl error head = " . $s ." \n";
			$this->adderr($err);
			
		}

Стандартная ситуация: вы купили такой тариф на хостинге :(

За ваши деньги, вам дается 30 сек , чтобы программа на ПХП начала и закончила свою работу.

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

 

Модуль "умеет" обходить такие неприятности.

Он успевает сохранить номер последней обработанной строки прайс-листа в файле sos.tmp

и когда вы нажмете "Обновить страницу" он продолжит работу с этого места...до следующего Maximum execution time of 30 seconds

А вы опять - "Обновить страницу" :)

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

Стандартная ситуация: вы купили такой тариф на хостинге :(

За ваши деньги, вам дается 30 сек , чтобы программа на ПХП начала и закончила свою работу.

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

 

Модуль "умеет" обходить такие неприятности.

Он успевает сохранить номер последней обработанной строки прайс-листа в файле sos.tmp

и когда вы нажмете "Обновить страницу" он продолжит работу с этого места...до следующего Maximum execution time of 30 seconds

А вы опять - "Обновить страницу" :)

Я предполагал такой сценарий и в php.ini и в htaccess прописал 18000 лимит, вместо 30. Но это не помогло, залил все на денвер и тут такая же ситуация. Сделал вывод, что это из-за парсинга.

 

А еще заметил, что парсятся фото товара и к каждому товару добавляется еще одно фото другого товара, откуда оно берется не имею даже понятия.

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


Да, в урл артикул добавлялся, и код товара добавлялся тоже.

Но начались проблемы, народ стал писать гневные посты, типа:

- уберите;

- оставьте.

 

Решил дать возможность каждому решать этот вопрос самостоятельно.

Найдите поиском в admin/model/catalog/suppler

 

// SEO URL

 

Там увидите закоментированные строки - готовые решения.

Откройте, какую вам нужно.

А эту комментировать нужно?

$seo_url = $this->MetaURL($seo_url);
Надіслати
Поділитися на інших сайтах


 

Поиск показал три результата:

/admin/controller/catalog/suppler.php
/admin/controller/module/parserj.php
/vqmod/vqcache/vq2_admin_model_catalog_categiry.php - этот файл сделал по Вашей прошлой рекомендации.
 
В .../model/... ничего нет.

 

Интересная ситуация.

Тогда получается, что /admin/controller/module/parserj.php должен выдавать ошибку.

Он ведь тоже обращается к этой функции :(

 

Покажите пожалуйста 5-10 строк из parserj.php

до и после того места, где встречается название getAllcategory

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

Подскажите что в файле SOS означает цифра 41, если в ней строк всего 20?

Значит пустые строки в конце прайса идут.

 

Но что-то долго работает :(

Это он 20 строк не успевает за 30 сек ?

Странно, должен обрабатывать примерно 200 - 300 (с одним фото).

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

Как-то не подумал об этом. тоже интересное решение.

А как это можно придумать без отключения товаров. чисто теоритически

Думал уже.

Тут такая нехорошая ситуация может возникнуть.

Представьте, что  поставщик предоставляет 2 прайса (на бытовую технику отдельно, на компьютеры - отдельно).

Мы прогоняем первый прайс, отключаются все компьютеры.

Прогоняем второй прайс - отключается вся бытовуха :)

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

Интересная ситуация.

Тогда получается, что /admin/controller/module/parserj.php должен выдавать ошибку.

Он ведь тоже обращается к этой функции :(

 

Покажите пожалуйста 5-10 строк из parserj.php

до и после того места, где встречается название getAllcategory

 

Вот:

	private function rus2translit($string) {
		$converter = array(
			'а' => 'a',   'б' => 'b',   'в' => 'v',
			'г' => 'g',   'д' => 'd',   'е' => 'e',
			'ё' => 'e',   'ж' => 'zh',  'з' => 'z',
			'и' => 'i',   'й' => 'y',   'к' => 'k',
			'л' => 'l',   'м' => 'm',   'н' => 'n',
			'о' => 'o',   'п' => 'p',   'р' => 'r',
			'с' => 's',   'т' => 't',   'у' => 'u',
			'ф' => 'f',   'х' => 'h',   'ц' => 'c',
			'ч' => 'ch',  'ш' => 'sh',  'щ' => 'sch',
			'ь' => '' ,   'ы' => 'y',   'ъ' => '',
			'э' => 'e',   'ю' => 'yu',  'я' => 'ya',
			
			'А' => 'A',   'Б' => 'B',   'В' => 'V',
			'Г' => 'G',   'Д' => 'D',   'Е' => 'E',
			'Ё' => 'E',   'Ж' => 'Zh',  'З' => 'Z',
			'И' => 'I',   'Й' => 'Y',   'К' => 'K',
			'Л' => 'L',   'М' => 'M',   'Н' => 'N',
			'О' => 'O',   'П' => 'P',   'Р' => 'R',
			'С' => 'S',   'Т' => 'T',   'У' => 'U',
			'Ф' => 'F',   'Х' => 'H',   'Ц' => 'C',
			'Ч' => 'Ch',  'Ш' => 'Sh',  'Щ' => 'Sch',
			'Ь' => '\'',  'Ы' => 'Y',   'Ъ' => '\'',
			'Э' => 'E',   'Ю' => 'Yu',  'Я' => 'Ya',
		);
		return strtr($string, $converter);
	}
	
	
	private function getAllCategories($categories, $parent_id = 0, $parent_name = '') {
		$output = array();
		if (array_key_exists($parent_id, $categories)) {
			if ($parent_name != '') {
				$parent_name .= $this->language->get('text_separator');
			}
			foreach ($categories[$parent_id] as $category) {
				$output[$category['category_id']] = array(
														'category_id' => $category['category_id'],
														'name'        => $parent_name . $category['name']
															);
				$output += $this->getAllCategories($categories, $category['category_id'], $parent_name . $category['name']);
			}
		}
		return $output;
	}
Надіслати
Поділитися на інших сайтах


 

А эту комментировать нужно?

$seo_url = $this->MetaURL($seo_url);

Думаю, лучше всего будет так:

 

// SEO

       $seo_url = $prod_name;        

  

        $seo_url = $seo_url.'_'.$row_product[0]['model']; // название товара+Модель  

 

        $seo_url = $this->MetaURL($seo_url);

        $seo_url = strtr($seo_url, $tr);    

        $seo_url = strtolower($seo_url);

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

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

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

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

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

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

Вхід

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

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

Important Information

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