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

ILexus

Новачок
  
  • Публікації

    39
  • З нами

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

Усі публікації користувача ILexus

  1. Уважаемый разработчик. Сейчас пользуюсь бесплатным модулем СДЭК, но есть с ним некоторые проблемы, поэтому возникли вопросы по Вашему модулю. 1. У бесплатного модуля есть очень большой недостаток. Если выбрать большое количество различных тарифов для подсчета стоимости доставки, то очень сильно увеличивается время загрузки страницы оформления заказа. А если использовать какой нибудь Ajax чекаут, то вообще беда, на каждое изменение поля, страница реагирует долгой перезагрузкой и обновлением данных. Как обстоят дела с этим в Вашем модуле? Curl работает в последовательном или многопоточном режиме? Или реализовано что то другое для решения этой проблемы? 2. Если использовать Ваш модуль расчета доставки, будет ли работать обмен и выгрузка в СДЭК бесплатного модуля? На данный момент не готов покупать Ваш СДЭК обмен, т.к. бесплатный работает вроде нормально хотя и есть недостатки. По по моему мнение ценник на СДЭК обмен завышен.
  2. Уважаемый разработчик, приветствую. Есть несколько вопросов. 1. Работа со значениями стандартного фильтры Opencart поддерживаются? Если да, то есть ли возможность добавить кастомные изображения к стандартным фильтрам? 2. Есть ли возможность добавлять описание к фильтрам? Подразумевается что то типа всплывающего окна при наведении на фильтр или знак вопроса. 3. Будет ли возможность добавить фильтр на другие страницы, кроме в Категорий, Производителей и Акций? У меня есть страницы с товарами "Новинки", "Все товары", "Хиты продаж" и т.п. 4. Логика модуля закублена? Возникнуть ли у меня проблемы с доработкой модуля или внесение изменений в дальнейшем? Этот вопрос относится и к предыдущему, будет ли возможности самому доработать и добавить фильтры на нужные страницы при необходимости?
  3. Ответ был дан автору вопроса. Проблема самого движка. Я указал на свое сообщение, т.к. данная проблема уже поднималась и модуль тут не причем. По ссылке есть информация которая ведет на тему с решением данной проблемы на уровне движка.
  4. @Rassol2 Приветствую. Мне мои поставщики постоянно выкручивают яйца со своими изменениями на их веб ресурсах. То что вчера парсинг с обновлением цен и остатков работал как часы, сегодня уже нет. Приходится изгаляться. Ранее поставщик отображал на сайте общее количество товара на их складах, теперь он отображает разное количество в разных филиалах. А мне нужно общее, но я не могу загнать в остатки несколько значений. Мне нужно сначала их сложить Есть возможность реализовать математические операции нескольких границ парсинга? Само собой это должно работать только с численными значениями и только в поле количество. Что то типа такого: {gran_177}{+}{gran_178}{+}{gran_179} Еще нужно логическое ИЛИ {|} в "Количество товара" по аналогии с "Ценой товара".
  5. Что то не могу понять, второе задание ни в какую не хочет стартовать в 18:00. Вроде логика прописана верно. Первое задание работает исправно. UPD.Если прописать например 18-23 работает. Получается, что с До полуночи на После полуночи не работает.
  6. @Rassol2 А можно тогда реализовать выполнение заданий попеременно в одном потоке? Допустим если у всех заданий Порядок выполнения стоит 0, Время выполнения позволяет выполняться всем заданиям, тогда выполнять каждое задание попеременно по одной ссылки за раз. Тогда это решило бы все задачи. А кому надо выполнять задания по очереди, после завершения конкретного, пусть ставят приоритеты, т.е. разный порядок выполнения. Вот ты сам поставь себя на мое место. Как бы ты тогда реализовал автоматизацию данного процесса? Я выкручиваюсь как могу. Каждый раз подсовывать новые данные авторизации для парсинга это можно и вручную, но тогда весь смысл крона пропадает! Хочется запустил и забыл.
  7. Авторизация не слетает, если как минимум 1 раз в 1,5 часа делать хотя бы 1 запрос на сайте поставщика. Видимо после каждого запроса обнуляется счетчик очищения сессии куки. Я уже протестировал все работает, если парсить круглосуточно. Я не могу другие задании крон запустить, т.к. одно задание должно парсить без остановки! Очень прошу, реализуй пожалуйста возможность запускать несколько заданий крон одновременно. Ведь не проблема запускать несколько sp_cron.php. Главное чтобы каждому заданию свой крон соответствовал. Я бы сам покопался, но ты закубил sp_cron.php Можно поподробней? Модуль сам будет подставлять логин и пароль в форме авторизации?
  8. @Rassol2 Уважаемый разработчик. Есть ли возможность запустить несколько заданий по крону одновременно? А не по очереди. Проблема в том что у одного поставщика, парсить данные приходиться через авторизацию, но эта авторизация слетает после 1,5 часа бездействия, и поочередное выполнение нескольких заданий в данном случае не возможно. Соответственно для полной автоматизации необходимо постоянно поддерживать связь с сайтом поставщика. Планируется что данные с этого поставщика будут парситься с большими паузами(в тех пределах чтобы авторизация не слетала), но круглосуточно, без перерывов. Главное чтобы данные актуализировались без моего вмешательства.
  9. Готовое решение На стековерфлоу посоветовали достать данные через таблицу oc_product. Не знаю кому может пригодится, но все же оставлю здесь. Спасибо всем кто пытался помочь Функция getProductSpecials $sql = "SELECT DISTINCT p.product_id, ( SELECT AVG(rating) FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = ps.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_special ps ON (ps.product_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p.status = '1' AND p.date_available <= NOW() AND (ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' OR p.fake_special > '0') AND (((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) OR p.fake_special > '0') GROUP BY p.product_id"; Функция getTotalProductSpecials $query = $this->db->query(" SELECT COUNT(DISTINCT p.product_id) AS total FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_special ps ON (ps.product_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND (ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' OR p.fake_special > '0') AND (((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) OR p.fake_special > '0')");
  10. Да я пробовал так объединить под общим SELECT $sql = "SELECT * FROM (SELECT ps.product_id, ( SELECT AVG(rating) FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = ps.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating FROM " . DB_PREFIX . "product_special ps LEFT JOIN " . DB_PREFIX . "product p ON (ps.product_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) GROUP BY ps.product_id UNION SELECT p.product_id, ( SELECT AVG(rating) FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p.status = '1' AND p.fake_special > '0' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' GROUP BY p.product_id) t ORDER BY p.sort_order"; Fatal error: Uncaught Exception: Error: Unknown column 'p.sort_order' in 'order clause'
  11. Что последний?) Я конечно могу додумывать иногда, но в данном случае в замешательстве)
  12. Спасибо за совет, получилось объединить два SELECT с помощью UNION, дополнительные товары вывелись. Правда не знаю правильно ли использовал UNION $sql = "SELECT ps.product_id, ( SELECT AVG(rating) FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = ps.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating FROM " . DB_PREFIX . "product_special ps LEFT JOIN " . DB_PREFIX . "product p ON (ps.product_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) GROUP BY ps.product_id UNION SELECT p.product_id, ( SELECT AVG(rating) FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p.status = '1' AND p.fake_special > '0' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' GROUP BY p.product_id"; Но вылезла проблема с сортировкой, при ORDER BY p.sort_order например, вылезает ошибка Fatal error: Uncaught Exception: Error: Table 'p' from one of the SELECTs cannot be used in field list Не получается объединить оба SELECT под одним ORDER BY.
  13. Спасибо за ответ. Да действительно, мы ведь получаем данные из oc_product_special, а там не могут быть товары у которых не прописаны акции. Тогда к сожалению моих знаний не хватает, чтобы реализовать данную хотелку. Если только кто нибудь подскажет, как правильно и лучше сделать.
  14. Всем привет. Помогите разобраться. Дано: Имеется функция getProductSpecials в catalog/model/catalog/product.php Используется для вывода товаров на странице с акциями. Задача: Необходимо дополнительно вывести на странице с акциями, товары, у которых поле fake_special > 0 в oc_product Поле есть, в карточке товара значение больше 0. Но никак не получается вывести данные товары. Попытки вставить p.fake_special > '0' в SQL запрос не увенчались успехом. Не могу понять в чем причина. Вставлял по разному, через AND и OR, все равно не проходит проверку. Отображается только если в карточке товара прописана Акция. Код оригинал $sql = "SELECT DISTINCT ps.product_id, ( SELECT AVG(rating) FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = ps.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating FROM " . DB_PREFIX . "product_special ps LEFT JOIN " . DB_PREFIX . "product p ON (ps.product_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) GROUP BY ps.product_id"; Вот так по идеи должно работать, но нет. Видимо что то упускаю. $sql = "SELECT DISTINCT ps.product_id, ( SELECT AVG(rating) FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = ps.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating FROM " . DB_PREFIX . "product_special ps LEFT JOIN " . DB_PREFIX . "product p ON (ps.product_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND ((ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "') OR p.fake_special > '0') AND (((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) OR (p.fake_special > '0')) GROUP BY ps.product_id";
  15. https://opencartforum.com/topic/102992-oshibka-sitemap-roditelskiy-teg-url-teg-lastmod-znachenie-0001-11-30/ Оказывается это проблема существует давно, проблема в самом движке. Странно, что до парсинга с ней не сталкивался. По сути лучше добавить, хуже не будет. Использую округление до целого числа. Но бывают мелкие товары, преимущественно стоимость которых до 10 руб, использую до десятых.
  16. По поводу ошибки. При парсинге и добавлении товара на сайт, не заполняется поле date_modified в oc_product. Получаются нули 0000-00-00 00:00:00 При формирование стандартного sitemap попадают тоже нули и получается что то типа этого <lastmod>-0001-11-30T00:00:00+02:30</lastmod> на что ругаются гугл и яндекс мол неверное значение тега lastmod. Необходимо добавить date_modified = NOW(), в секцию sql главного запроса на добавление товара.
  17. Вносить изменения не проблема, есть же Notepad++ и плагин Compare, просто муторно. Не трать время на это в следующий раз. Я всегда могу сравнить файлы разных версий и увидеть что поменялось.
  18. @Rassol2 сразу хочу пояснить, я не в коем случае ничего не навязываю, просто предложил по моему мнение упущенный функционал, который кушать не просит и отлично работает. Это твоя разработка и только тебе принимать решение. Да кстати, там еще ISBN, MPN есть. Да согласен, бонусные баллы с донора не нужно парсить. Основная суть заключается в том, чтобы при добавлении товара или обновлении цен товара, автоматически заполнять эти поля, чтобы потом не делать это вручную Для себя я уже приноровил парсинг. Делается очень просто. Парсим цену поставщика 2 раза, один раз для цены товара + наценка, второй раз для вычисления бонусов. Применяю простую математическую формулу, пример: {1|<};*1.15*0,05 (+15% наценка + вычисление бонусов 5% + округление в меньшую сторону.). Да можно и туда, но это двойная работа, лучше сразу при парсинге добавлять. Парсить не вариант. У меня ID товаров сейчас 4х значные, поэтому приходится прибавлять до 5 знаков. У меня есть определенная специфика формирования этих кодов товаров. Первые 2е цифры обозначают код производителя, остальные 3 цифры код товара. Поэтому так заморочено. Фиг с ним, может что то сам придумаю Сейчас приходится при каждом запуске парсинге-добавлении товаров в файл лезть. Думал может какую нибудь настройку прикрутить прямо в Парсинг в ИМ. Да все работает на удивление хорошо. В логи тоже все пишется. Не исключаю, что мог что-то упустить. 2020-05-04 02:29:55| Парсинг : УСПЕШНЫЙ ЗАПРОС | Код ответа [200] Ссылка | http://xxx/catalog/search/products/5493390 2020-05-04 02:29:55| ->Добавлена бонусы к начислению = 53 | Для групп(ы) покупателей = ,1 2020-05-04 02:29:55| ->[ОБНОВЛЕН ТОВАР] ID = 1806 | Идентификатор ean = [ETM5493390] 2020-05-04 02:29:55| -->Обновление | Бонусные баллы = 1060 2020-05-04 02:29:55| -->Обновление | Цена = 1060 2020-05-04 02:29:55| -->Обновление | Количество = 1 Код довольно хорошо написан. Зря прибедняешься. С учетом оставленных комментарий, было не сложно добавить нужный мне функционал. Отлично. Сейчас у меня за неделю накопилось идей и вопросов по реализации тех или иных задач. Буду порционно выкатывать. Вроде как нашел ошибку, проверю еще раз и отпишусь.
  19. Rassol2, хочу поблагодарить за отличный модуль, ты сэкономил мне кучу времени, спасибо тебе огромное. Теперь когда я получил руки мощнейший инструмент, хочется полностью автоматизировать рутинную работу, которую раньше выполнял в ручную. Меня интересует не сколько сам парсинг товаров, а сколько возможность, например, автоматически формировать цены от цен поставщиков(а цены в России из за дырявой экономики и слабого рубля, скачут постоянно). Когда товаров в магазине переваливает за тысячу, вручную это все делать такая боль. Очень хочется автоматизировать информацию о наличие товара у поставщиков и т.п. Прежде всего прошу добавить тебя Индентификаторы товара UPС, EAN и JAN. Я сам добавил эти Идентификаторы товара по аналогии со SKU, но хотелось бы чтобы они были изначально в твоем модулей, чтобы при каждом обновлении не вносить в ручную изменения. Хотя многие и не используют эти поля по прямому назначению, они могут пригодиться в будущем кому то. Я сам использую их для артикулов и кодов разных поставщиков. Очень странно, что никто об это не заявлял ранее. Никто не пользуется встроенной системой бонусов Opencart? Почему нет возможности заполнять Бонусные баллы(Reward Points). Бонусы к начислению за покупку и цена товара в бонусных баллах. Так же добавил эти поля по аналогии с акционными ценами и UPC. Есть ли возможность формировать model товара при парсинге по собственному шаблону? Сейчас model при добавлении товара создается от последнего ID товара который существует в магазине: $model = $this->db->query("SELECT MAX(`product_id`) as lid FROM " . DB_PREFIX . "product"); $data['model'] = $model->row['lid']+1; К сожалению мне не подходит данный метод формирования model, т.к. model у меня используется в магазине как 5 значный код товара, для облегченного поиска товаров на сайте. Сейчас для формирование 5 значного кода товара, мне приходится прибегать к такой конструкции, что дико не удобно. Пример: $data['model'] = $model->row['lid']+67941; PS. Я не очень силен в php. Могу скинуть тебе свой файл admin/model/catalog/simplepars.php
  20. Уважаемый разработчик. Пользуюсь Вашим шаблоном уже довольно давно. Сейчас заметил, что некоторым покупателям доставляет неудобство постоянно всплывающая Popup корзина при каждом нажатии кнопки купить. Товар в магазине специфичный, покупают от 10 и более разных позиций и каждый раз приходиться прокручивать список Popup корзины вниз, чтобы нажать на кнопку "Продолжить покупки", не все знают, что можно ткнуть на край Popup окна для его закрытия. Можно ли выводить Popup корзину с определенным интервалом, например раз 5 минут, а не при каждом нажатии кнопки купить? Ну или добавить настройку галочку "Не выводить корзину" определенное время? К сожалению не силен в Javascript. Заранее спасибо.
  21. Всем спасибо за ответы, перепробовал куча вариантов, думал почему лыжи не едут, оказывается нет такого функционала в ocmod Именно к такой конструкции кода я пришел перебором разных вариантов, работает, но мне показалось это такой костыль , комментировать через ocmod часть старого кода которую не получилось полностью заменить. В примерах других разработчиков никогда такого не встречал. Да я хотел ввести новую переменную, но тогда придется вносить изменения в шаблон нескольких местах, что очень не хотелось бы. Переопределение переменной для меня будет самым верным решением в данном случае.
  22. Всем привет. Подскажите пожалуйста, не могу разобраться в проблеме. Имеется код в языковом файл: // Error $_['error_login'] = 'Неправильно заполнены поле E-Mail и/или пароль!'; $_['error_attempts'] = 'Вы превысили максимальное количество попыток авторизации. Повторите попытку авторизации на сайте через 1 час'; $_['error_approved'] = 'Необходимо подтвердить аккаунт перед авторизацией.'; Задача: заменить значение error_login на другое Кусок кода ocmod: <operation> <search><![CDATA[$_['error_login']]]></search> <add position="replace"><![CDATA[ $_['error_login'] = 'Неправильно заполнены поле E-Mail или Телефон и пароль!'; ]]></add> </operation> После применения ocmod получается так, что вызывает синтаксическую ошибку: // Error $_['error_login'] = 'Неправильно заполнены поле E-Mail или Телефон и пароль!'; = 'Неправильно заполнены поле E-Mail и/или пароль!'; $_['error_attempts'] = 'Вы превысили максимальное количество попыток авторизации. Повторите попытку авторизации на сайте через 1 час'; $_['error_approved'] = 'Необходимо подтвердить аккаунт перед авторизацией.'; Как можно найти кусок кода и заменить всю строку? Не хочу искать по всей строке т.к. перевод в разных сборка Opencart может отличаться.

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

Important Information

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