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

Mysha

Користувачі
  
  • Публікації

    162
  • З нами

  • Відвідування

Повідомлення, опубліковані користувачем Mysha

  1. Работал с человеком @php , и могу сказать, что парсинг - это его тема. Он знает что и куда, как взять и как положить в ОК без сторонних платных плагинов. За 1,5 дня мне запарсили и всунули в магизин все, что я хотел.

  2. Искал человека на срочную работу, сотни просмотров задачи, 1 вялая ухмылка Тома в ПМе и более ничего. Поначалу было несколько человек на старте, но потом, когда обнаружился iframe и js, люди отвалились. Отозвался только @php. Поначалу и его смутил этот момент, но через 15 минут решение было найдено, и он сделал все четко и в срок. За 30 часов по сути. Так как основным критерием была скорость, то я остался очень доволен.

     

    Смело могу рекомедовать этого исполнителя!

  3. После половины дня танцев с бубном.

     

    1. Для начала, у вас все должно быть настроено верно, а именно, как показано на картинке ниже:Yandex-Opencart.PNG.babf488e9f14142a0de9ea659621f5ed.PNG
       
    2. Вы отправляете почту из формы обратной связи, и получаете PHP Fatal error:  Uncaught Exception: Error: Password not accepted from server! 
    3. Помимо того, что это может быть банальный неверный пароль, куда более вероятно, что вы ни разу не заходили в бизнесовый почтовый ящик Яндекс и не приняли соглашение пользователя. Недостаточно быть админом и зайти в него, нужно еще и зайти под пользователем, которого вы создали как админ. Это очень важно, но неочевидно! Убил в этой точке 2 часа :(
    4. Далее, не путайте пароли. Вам нужно указывать не пароль админа 360, а пароль пользователя сервиса 360. Либо, если вы не хотите его светить в магазине, зайдите в эккаунт Коннект/360 и разрешение использование паролей приложений (App Password). Далее, создайте такой первый пароль для сервиса Почта. Система Яндекс сгенерит его вам автоматически. И использовать этот пароль во вкладке Mail этот пароль для SMTP как обычный пароль для SMTP, но при этом, ваш основной пароль от SMTP никто не узнает.
    5. Дальше вы получите другую ошибку: PHP Fatal error:  Uncaught Exception: Error: MAIL FROM not accepted from server! Это значит, что тему с паролем и авторизацией вы проехали, сервер вас узнал, но ему не нравится несовпадение ящика отправителя с ящиком, который был сообщен SMTP-серверу при обмене командами. Для решения этой проблемы правите файл /catalog/controller/information/contact.php:

     

    /*            $mail->setFrom($this->request->post['email']); */
                $mail->setFrom($this->config->get('config_email'));


    Все, радуетесь жизни.

     

    Да, подобных постов тут было много, но инфо по п.п. 2 было найти очень тяжело. И по OC3 информации мало, а contact.php немного изменился (не в одной конкретно этой строке, а вообще).

    Эта инструкция для тех, кто хочет все и за 1 минуту :)

     

    FAQ:

    1. Почему Яндекс.Коннект? Потому, что свой домен. А G-Suite стал стоить 6 долларов в месяц. Деньги невеликие, но для некоммерческого проекта хотел сделать принципиально бесплатно.
    2. Почему не PHP Mail и не свой почтовый сервер, такой как EXIM? Потому, что в DigitalOcean закрыт outbound TCP port 25, и открыть его по запросам в ТП невозможно. Почтовые релеи не могут обмениваться почтой, а точнее, ваш почтовый сервер ничего не может отправить наружу.
    • +1 2
  4. Нужна такая услуга или модуль под последний OC3. А именно, засосать товары из 6-8 категорий eBay по ~120-150 штук из каждой и положить в мой ОС.

     

    Можно делать как угодно. Ваш модуль, ваши скрипты, обмен через CSV/XLS, ваш парсер и потом SQL и так далее. Как угодно, вы ничем не ограничены. Важен только конечный результат.

     

    Важно! Вариации по товарам (size, color) не нужны. То есть, засасываем только основной (один) товар per item.

     

    Хотел сделать сам, но не судьба:

    • Купил модуль Import product from eBay, но не работает и автор не отвечает.
    • Проект parsemx закрыт.

    На решение вопроса есть только 2-3 дня.

     

    Кому-то интересно?

  5. Нужен такой модуль или услуга под последний OC3.

    А именно, засосать товары из 6-8 категорий eBay по 150 штук из каждой и положить в мой ОС.

     

    Купил модуль Import product from eBay, но не работает и автор не отвечает.

    Проект parsemx закрыт.

    На решение вопроса есть только 2-3 дня.

     

    Кому-то интересно?

  6. Вопрос решил установкой владельца на файлы OC3 как admin:admin.

    chown -R admin:admin /path/to/your/oc3/wwwroot/

    Логично, что скрипты apache:apache не могли двигать файлы и директории admin:admin.

  7. Имею свежую установку OC 3. Магазин в целом жив на 99%, фронт и адмика работают. Но некоторые функции в админке падают с ошибками.  Например, падает с ошибками ошибка кэша SASS, установке расширения (совместимого и разработанного коммьюнити OC).

     

    Искал по форуму, гуглил. Перешерстил Stackoverflow, Habr и пр. ресурсы. Но именно такой ситуации как у себя не нашел.

     

    В логах полным-полна коробочка:

    Spoiler

    2021-11-14 7:42:55 - PHP Warning:  unlink(/home/admin/web/dom.tld/public_html/admin/view/stylesheet/bootstrap.css): Permission denied in /home/admin/web/dom.tld/public_html/admin/controller/common/developer.php on line 94
    2021-11-14 7:43:13 - PHP Warning:  mkdir(): Permission denied in /home/admin/web/dom.tld/public_html/admin/controller/marketplace/install.php on line 212
    2021-11-14 7:43:13 - PHP Warning:  mkdir(): Permission denied in /home/admin/web/dom.tld/public_html/admin/controller/marketplace/install.php on line 212
    2021-11-14 7:43:13 - PHP Warning:  rename(/storage/upload/tmp-B4TmfPjEza/upload/admin/controller/extension/getSingleProduct/ebay.php,/home/admin/web/dom.tld/public_html/admin/controller/extension/getSingleProduct/ebay.php): No such file or directory in /home/admin/web/dom.tld/public_html/admin/controller/marketplace/install.php on line 218

     

    Я примерно нашел проблему по косвернным признакам. Например, папка tmp-B4TmfPjEza и файлы в ней имеют владельца admin:admin.

     

    То есть, проблема где-то с настройками на уровне администрирования.

     

    Данные о системе:

     

    VPS (CentOS 7x64 + VestaCP, если что).

    SELinux и тяжелое наследие с context выключено.

    PHP 7.4

    Включен open_basedir. Но по нему сделаны настройки и они эффективны:

    /home/admin/web/dom.tld/public_html:/home/admin/tmp:/home/admin/web/dom.tld/:/storage/

     

    Apache работает из под юзера Apache: 

    ps -ef | egrep '(httpd|apache2|apache)' | grep -v `whoami` | grep -v root | head -n1 | awk '{print $1}'

     

    Папкой storage владеет apache:apache, и находится в /. Права на нее пока были выданы максимальные: 

    sudo chmod -R 777 /storage/

     

    Владелец на веб-папку OC3 (/home/admin/tmp:/home/admin/web/dom.tld/) выставлен apache:apache рекурсивно. Права на файлы OC3 выствавлены -R как 0644, а на папки - R 0755. Файлы config.php (оба) вучную выставлены на 0755.

     

    В обох конфигах сторадж определен как:

    define('DIR_STORAGE', '/storage/');

     

    Прощу помощи в направлении движения. И в частности, почему файлы extension влетают с владельцем admin:admin.

  8. Ребята,

    У меня теперь все как бы работает, но валюту RUB надо пинать вручную, иначе не обновляется даже в течение 2 дней. Хотя в настройках OC стоит галка "автоматическое обновление". Внимание, этот код вам as is не подойдет, так так у меня специфически настройки валют:

     

    	public function refresh($force = false) {
    		$currency_data = array();
    
    		if ($force) {
    //			$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "currency WHERE code != '" . $this->db->escape($this->config->get('config_currency')) . "'");
    			$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "currency WHERE 1 ");
    		} else {
    			$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "currency WHERE code != '" . $this->db->escape($this->config->get('config_currency')) . "' AND date_modified < '" .  $this->db->escape(date('Y-m-d H:i:s', strtotime('-1 day'))) . "'");
    		}
    		foreach ($query->rows as $result) {
    if ($result['code'] == 'RUB') {
    			$response = file_get_contents('https://www.alphavantage.co/query?function=CURRENCY_EXCHANGE_RATE&from_currency=USD&to_currency=RUB&apikey=YOURKEYHERE');
    			
    			$json = json_decode($response);
    			
    			if (@is_null($json->{"Error Message"})) {
    				$value = (float) $json->{"Realtime Currency Exchange Rate"}->{"5. Exchange Rate"};
    				$this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '" . $value . "', date_modified = '" .  $this->db->escape(date('Y-m-d H:i:s')) . "' WHERE code = '" . $this->db->escape($result['code']) . "'");
    			}
    }
    		}
    
    		$this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '1.00000', date_modified = NOW() WHERE code = 'USD'");
    
    		$this->cache->delete('currency');
    	}

    API работает верно и все отдает как лапочка (с верным кодом клиента). Дело не в нем, а в механизме (логике) запуска автооапдейта курса. Не подскажете в чем может быть дело?

  9. Пытаюсь скрестить свой старый код, когда учет цен ведется в USD, а отображение идет в RUR. Поменял функцию, выставил старые значения, модифицировал URL по образу и подобию старого Yahoo. URL  работает отлично, но где-то у меня не хватает ума, и есть ошибка. Не поможете?

    	public function refresh($force = false) {
    		$currency_data = array();
    
    		if ($force) {
    			$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "currency WHERE code != '" . $this->db->escape($this->config->get('config_currency')) . "'");
    		} else {
    			$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "currency WHERE code != '" . $this->db->escape($this->config->get('config_currency')) . "' AND date_modified < '" .  $this->db->escape(date('Y-m-d H:i:s', strtotime('-1 day'))) . "'");
    		}
    
    		foreach ($query->rows as $result) {
    			$response = file_get_contents('https://www.alphavantage.co/query?function=CURRENCY_EXCHANGE_RATE&from_currency=USD&to_currency=RUB&apikey=P6WGY9G9LB22GMBJ');
    			
    			$json = json_decode($response);
    			
    			if (@is_null($json->{"Error Message"})) {
    				$value = (float) $json->{"Realtime Currency Exchange Rate"}->{"5. Exchange Rate"};
    				$this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '1.00000'" .  $this->db->escape(date('Y-m-d H:i:s')) . "' WHERE code = 'USD'");
    			}
    		}
    
    		$this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '" . $value . "', date_modified = '" .  $this->db->escape(date('Y-m-d H:i:s')) . "' WHERE code = 'RUB'");
    
    		$this->cache->delete('currency');
    	}
    
    	public function getTotalCurrencies() {
    		$query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "currency");
    
    		return $query->row['total'];
    	}
    }

    PHP дает вот такой выход:

    Notice: Undefined variable: value in /home/public_html/admin/model/localisation/currency.php on line 128
    Warning: Cannot modify header information - headers already sent by (output started at /home/public_html/admin/controller/startup/error.php:34) in /home/public_html/system/library/response.php on line 12

    Прошу помощи!

  10. Какая клиника? Если привязка идет к 4-8 товарам при 2200 SKU? Плюс, как я сказал, кликабильность там странноватая, не всегда с первого раза получается - где-то какой-то JS козлит. Посчитайте сколько кликать - десятки тысяч же...

     

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

  11. Уважаемый автор!

     

    Как сделать так, чтобы по дефолту привязка делалась "бирюзовая >>>" ? Чтобы не нужно было кликать, у меня тут клики какие-то нестабильные, приходится по 2 раза прокликивать. Да и вообще двухсторонняя нужна редко.

×
×
  • Створити...

Important Information

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