globaltrading Опубликовано: 28 января 2021 Поделиться Опубликовано: 28 января 2021 Здравствуйте. Что было в последнем обновлении от 27.01.2021 ? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
markvozniak Опубликовано: 9 февраля 2021 Поделиться Опубликовано: 9 февраля 2021 В последнее время, примерно раз в неделю, какой-то спамерский бот забивает уведомления, по 50-100 за несколько минут. Валится куча писем. Причем пытается внедрить какой-то код через форму периодически. Защиту от спамеров не планируете прикрутить, хотя бы капчу? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
seregin Опубликовано: 10 февраля 2021 Автор Поделиться Опубликовано: 10 февраля 2021 12 часов назад, markvozniak сказал: В последнее время, примерно раз в неделю, какой-то спамерский бот забивает уведомления, по 50-100 за несколько минут. Валится куча писем. Причем пытается внедрить какой-то код через форму периодически. Защиту от спамеров не планируете прикрутить, хотя бы капчу? Каптча в модуле стоит с самой первой версии. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... almir Опубликовано: 11 февраля 2021 Поделиться Опубликовано: 11 февраля 2021 В 15.12.2020 в 14:47, seregin сказал: Добрый день. Это надо дополнительно добавлять функцию в модуль импорта. Небольшое отступление, ставил на сайт шаблон Unishop (наверное в нем есть такой функционал), импорт CSV без правок, при обновлении срабатывало уведомление на почту покупателя. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... seregin Опубликовано: 12 февраля 2021 Автор Поделиться Опубликовано: 12 февраля 2021 15 часов назад, almir сказал: Небольшое отступление, ставил на сайт шаблон Unishop (наверное в нем есть такой функционал), импорт CSV без правок, при обновлении срабатывало уведомление на почту покупателя. Сейчас получается не срабатывает? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... almir Опубликовано: 12 февраля 2021 Поделиться Опубликовано: 12 февраля 2021 1 час назад, seregin сказал: Сейчас получается не срабатывает? Это я к тому что не нужно было править импорт, сейчас нужна такая функция на шаблоне по дефолту. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... seregin Опубликовано: 12 февраля 2021 Автор Поделиться Опубликовано: 12 февраля 2021 48 минут назад, almir сказал: Это я к тому что не нужно было править импорт, сейчас нужна такая функция на шаблоне по дефолту. Ну как я до этого и писал, нужно дорабатывать модуль экспорта csv Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 2 недели спустя... wgadget Опубликовано: 22 февраля 2021 Поделиться Опубликовано: 22 февраля 2021 В 28.01.2021 в 20:49, globaltrading сказал: Здравствуйте. Что было в последнем обновлении от 27.01.2021 ? @seregin Подскажите по истории обновления, что было добавлено в какую версию. Не нашли у вас этой информации. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... seregin Опубликовано: 22 февраля 2021 Автор Поделиться Опубликовано: 22 февраля 2021 2 часа назад, wgadget сказал: @seregin Подскажите по истории обновления, что было добавлено в какую версию. Не нашли у вас этой информации. Смотрите в файле CHANGELOG.txt 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 1 месяц спустя... roman21 Опубликовано: 8 апреля 2021 Поделиться Опубликовано: 8 апреля 2021 Спасибо, версия opencart-cms.ru 2.3.0.2.5 - все работает отлично из коробки Добавил страницы в модификаторе (Популярні товари mostviewed.php, Хіти продажів bestseller.php, Новинки latest.php - выводятся в подвале на главной странице, не уверен есть ли такое на чистом oc) строчка 388 : <file path="catalog/controller/product/{category.php,search.php,special.php,mostviewed.php,latest.php,bestseller.php}"> полтора часа настраивал шаблоны писем, а так установка и настройка 5 мин Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... roman21 Опубликовано: 8 апреля 2021 Поделиться Опубликовано: 8 апреля 2021 подскажите не планируется ли адаптация под oc1.5.6.4 ? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... seregin Опубликовано: 8 апреля 2021 Автор Поделиться Опубликовано: 8 апреля 2021 5 часов назад, roman21 сказал: подскажите не планируется ли адаптация под oc1.5.6.4 ? Под 1.5 не будет. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 2 месяца спустя... Yureka Опубликовано: 22 июня 2021 Поделиться Опубликовано: 22 июня 2021 Добрый день. Переменные для оповещений об изменении статуса товаров (например {product_url} ) могут быть в виде ссылок, чтобы получатель уведомления из письма мог сразу на ссылку нажать и перейти к товару на сайте? Или у меня что-то не правильно установилось? Ссылки просто в виде текста в письме. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... seregin Опубликовано: 22 июня 2021 Автор Поделиться Опубликовано: 22 июня 2021 3 часа назад, Yureka сказал: Добрый день. Переменные для оповещений об изменении статуса товаров (например {product_url} ) могут быть в виде ссылок, чтобы получатель уведомления из письма мог сразу на ссылку нажать и перейти к товару на сайте? Или у меня что-то не правильно установилось? Ссылки просто в виде текста в письме. Письмо в html, если нужны ссылки, то надо добавляйте <a href="{product_url}">{product_name}</a> 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 2 месяца спустя... niger Опубликовано: 25 августа 2021 Поделиться Опубликовано: 25 августа 2021 (изменено) В 08.04.2021 в 15:20, roman21 сказал: подскажите не планируется ли адаптация под oc1.5.6.4 ? я когда-то давно на форума находил для 1.5. И там все просто, только внешний вид подправить нужно было и немного по vqmod пройтись. И cron делал для него даже. Чтобы по крону проверял и отправлял письма. Только вот найти бы, Так как делал это 4 года назад. Вот этот вроде А крон уже делал самостоятельно Делал папочку крон в корне сайта. Туда клал файлик cron.php C вот таким содержимым Он в этой же папочке делает логгирование выполнения в файлик avails.txt <?php $fs = fopen('avails.txt', 'ab+'); fwrite($fs, date('Y-m-d H:i:s').' Запуск крона' ."\n"); fclose($fs); if (is_file('../admin/config.php')) { require_once('../admin/config.php'); } // Startup require_once DIR_SYSTEM.'startup.php'; // Registry $registry = new Registry(); // Config $config = new Config(); $registry->set('config', $config); // Database $db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE); $registry->set('db', $db); // Settings $query = $db->query("SELECT * FROM " . DB_PREFIX . "setting WHERE store_id = '0'"); foreach ($query->rows as $setting) { if (!$setting['serialized']) { $config->set($setting['key'], $setting['value']); } else { $config->set($setting['key'], unserialize($setting['value'])); } } // Loader $loader = new Loader($registry); $registry->set('load', $loader); // Front Controller $controller = new Front($registry); // Url $url = new Url(HTTP_SERVER, $config->get('config_secure') ? HTTPS_SERVER : HTTP_SERVER); $registry->set('url', $url); // SEO URL's if (!$seo_type = $config->get('config_seo_url_type')) { $seo_type = 'seo_url'; } $controller->addPreAction(new Action('common/' . $seo_type)); // Language $languages = array(); $query = $db->query("SELECT * FROM `" . DB_PREFIX . "language`"); foreach ($query->rows as $result) { $languages[$result['code']] = $result; } $config->set('config_language_id', $languages[$config->get('config_admin_language')]['language_id']); // Language $language = new Language($languages[$config->get('config_admin_language')]['directory']); $language->load($languages[$config->get('config_admin_language')]['directory']); $registry->set('language', $language); //availability function changeMailStatus($db, $id, $status) { if ($db->query("UPDATE " . DB_PREFIX . "avail SET status = '" . (int) $status . "' WHERE id = '" . (int) $id . "'")) { return true; } else { return false; } } $notify = $db->query("select * from " . DB_PREFIX . "product p, " . DB_PREFIX. "avail a where p.quantity >= 2 AND p.product_id = a.product_id AND a.status = 0"); $notify = $notify->rows; $lang = $loader->language('module/avail'); $i = 0; if (!empty($notify)) { foreach ( $notify as $info ) { $product_link = $url->link("product/product", "product_id=" . $info['product_id']); $mail = new Mail(); $mail->protocol = $config->get('config_mail_protocol'); $mail->parameter = $config->get('config_mail_parameter'); $mail->hostname = $config->get('config_smtp_host'); $mail->username = $config->get('config_smtp_username'); $mail->password = $config->get('config_smtp_password'); $mail->port = $config->get('config_smtp_port'); $mail->timeout = $config->get('config_smtp_timeout'); $mail->setTo($info['email']); $mail->setFrom($config->get('config_email')); $mail->setSender('\''.$lang['email_subject'].'\''); $mail->setSubject(html_entity_decode(sprintf($lang['email_subject'], $info['name'], ENT_QUOTES, 'UTF-8'))); $mail_text = "<!DOCTYPE html><html><head><meta http-equiv=«Content-Type» content=«text/html; charset=utf-8»></head><body>"; $mail_text .="<p>" . html_entity_decode($info['name'].', '.$lang['text_mail_send']. "</p>"); $mail_text .= "<p>" . $lang['text_product'] .': ' . $info['product'] . "</p>"; $mail_text .= "<p>" . $lang['text_link_page'] . ": " . " <a href=" . $product_link . ">" . $info['product'] . "</a></p>"; $mail_text .= "<p>" . $lang['text_price'] . ': ' . $info['price'] . "</p></body></html>"; $mail->setHtml($mail_text); $mail->send(); $change_mail_status = changeMailStatus($db,$info['id'],1); if ($change_mail_status === true){ $i++; }else{ $avail_error = fopen('avails.txt', 'ab+'); fwrite($avail_error , date('Y-m-d H:i:s').' --- Не удалось обновить статус после отправки письма'."\n"); fclose($avail_error); } } echo 'OK!'; $avail_logs = fopen('avails.txt', 'ab+'); fwrite($avail_logs , date('Y-m-d H:i:s').' --- Отправлено:'.' '.$i.' писем'."\n"); fclose($avail_logs); } ?> Ну и понятно, на сервере делает cron который дергает этот файлик. и у вас обновляется все автоматом и рассылается. а в логе потом можно глянуть что происходило Я ставил крон раз в час, после синхронизации остатков с 1С. И видно сработал ли крон, и сколько писем было отправлено. Правда понятно файлик нужно периодически удалять, чтобы не разрастался 2019-08-20 09:30:03 Запуск крона 2019-08-20 10:30:02 Запуск крона 2019-08-20 10:30:02 --- Отправлено: 2 писем 2019-08-20 11:30:07 Запуск крона 2019-08-20 11:30:08 --- Отправлено: 12 писем 2019-08-20 12:30:06 Запуск крона 2019-08-20 12:30:07 --- Отправлено: 3 писем Изменено 25 августа 2021 пользователем niger добавил инструкцию Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Назад 1 2 3 4 Вперёд Страница 4 из 4 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 10 Перейти к списку тем Похожие публикации Модуль Telegram уведомления [Поддержка] 1 2 3 4 10 Автор: Bn174uk, 24 февраля 2018 уведомление telegram (и ещё 14) Теги: уведомление telegram заказы отзывы новый пользователь статус заказа viber вайбер возврат товара потерянный заказ телеграм смс discord sms уведомление смс уведомление телеграм уведомление о заказах 230 ответов 31 888 просмотров Bn174uk В понедельник в 08:46 Модуль Viber уведомления [Поддержка] 1 2 3 Автор: Bn174uk, 30 августа 2018 уведомление telegram (и ещё 8) Теги: уведомление telegram заказы отзывы статус заказа новый пользователь вконтакте viber вайбер потерянный заказ 62 ответа 15 292 просмотра Bn174uk 3 декабря 2022 Модуль OCDEV.pro - СМС (SMS) уведомления для Opencart 2.x - 3.x [Поддержка] 1 2 3 4 Автор: ocdev_pro, 7 апреля 2019 смс смски (и ещё 12) Теги: смс смски смс sms смс opencart смс шлюз смс гейт смс клиенту смс рассылка смс шлюз sms gate смс коммерция смс статус смс оповещение смс уведомления смс-уведомление 97 ответов 11 883 просмотра ocdev_pro 12 января Модуль Автоматическое изменение статуса заказа и уведомление [Поддержка] 1 2 3 4 5 Автор: chukcha, 13 февраля 2018 статус заказа изменение статуса заказа (и ещё 4) Теги: статус заказа изменение статуса заказа изменеие статуса по времени письмо о смене статуса статус замовлення зміна стутусу замовлення 106 ответов 13 133 просмотра chukcha 25 декабря 2022 oc-max [Поддержка] "Укрпочта API" - модуль доставки для OpenCart 1 2 3 4 17 Автор: Prorab337, 14 октября 2018 укрпочта укрпочта апи (и ещё 6) Теги: укрпочта укрпочта апи укрпочта api api печать гакладных модул доставки доставка модуль доставки укрпочта 404 ответа 53 176 просмотров Glade 1 час назад Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Поддержка и ответы на вопросы Модули и дополнения Письма, почта, рассылки, sms Модуль Opencart: Уведомление о поступлении товара [Поддержка] Покупателям Оплата дополнений физическими лицами Оплата дополнений юридическими лицами Политика возвратов Разработчикам Регламент размещения дополнений Регламент продаж и поддержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каталога дополнений Урегулирование споров по авторским правам Полезная информация Публичная оферта Политика возвратов Политика конфиденциальности Платежная политика Политика Передачи Персональных Данных Политика прозрачности Последние дополнения Chameleon - адаптивный универсальный шаблон + Быстрый Старт Автор: 29aleksey Wayforpay API оплата для Opencart 2.3 Автор: bogdan281989 TgMarket - Модуль интернет магазина в телеграмме. Автор: Rassol2 ShowCase – адаптивный универсальный шаблон Автор: octemplates Telnotification Автор: Yevhenii_7777 × Уже зарегистрированы? Войти Регистрация Раздел покупок Назад Приобретенные дополнения Ваши счета Список желаний Альтернативные контакты Форум Новости ocStore Назад Официальный сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Скачать ocStore Документация История версий ocStore Блоги Модули Шаблоны Назад Бесплатные шаблоны Платные шаблоны Услуги FAQ OpenCart.Pro Назад Демо Купить Сравнение × Создать... Важная информация На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности. Я принимаю
almir Опубликовано: 11 февраля 2021 Поделиться Опубликовано: 11 февраля 2021 В 15.12.2020 в 14:47, seregin сказал: Добрый день. Это надо дополнительно добавлять функцию в модуль импорта. Небольшое отступление, ставил на сайт шаблон Unishop (наверное в нем есть такой функционал), импорт CSV без правок, при обновлении срабатывало уведомление на почту покупателя. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
seregin Опубликовано: 12 февраля 2021 Автор Поделиться Опубликовано: 12 февраля 2021 15 часов назад, almir сказал: Небольшое отступление, ставил на сайт шаблон Unishop (наверное в нем есть такой функционал), импорт CSV без правок, при обновлении срабатывало уведомление на почту покупателя. Сейчас получается не срабатывает? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... almir Опубликовано: 12 февраля 2021 Поделиться Опубликовано: 12 февраля 2021 1 час назад, seregin сказал: Сейчас получается не срабатывает? Это я к тому что не нужно было править импорт, сейчас нужна такая функция на шаблоне по дефолту. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... seregin Опубликовано: 12 февраля 2021 Автор Поделиться Опубликовано: 12 февраля 2021 48 минут назад, almir сказал: Это я к тому что не нужно было править импорт, сейчас нужна такая функция на шаблоне по дефолту. Ну как я до этого и писал, нужно дорабатывать модуль экспорта csv Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 2 недели спустя... wgadget Опубликовано: 22 февраля 2021 Поделиться Опубликовано: 22 февраля 2021 В 28.01.2021 в 20:49, globaltrading сказал: Здравствуйте. Что было в последнем обновлении от 27.01.2021 ? @seregin Подскажите по истории обновления, что было добавлено в какую версию. Не нашли у вас этой информации. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... seregin Опубликовано: 22 февраля 2021 Автор Поделиться Опубликовано: 22 февраля 2021 2 часа назад, wgadget сказал: @seregin Подскажите по истории обновления, что было добавлено в какую версию. Не нашли у вас этой информации. Смотрите в файле CHANGELOG.txt 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 1 месяц спустя... roman21 Опубликовано: 8 апреля 2021 Поделиться Опубликовано: 8 апреля 2021 Спасибо, версия opencart-cms.ru 2.3.0.2.5 - все работает отлично из коробки Добавил страницы в модификаторе (Популярні товари mostviewed.php, Хіти продажів bestseller.php, Новинки latest.php - выводятся в подвале на главной странице, не уверен есть ли такое на чистом oc) строчка 388 : <file path="catalog/controller/product/{category.php,search.php,special.php,mostviewed.php,latest.php,bestseller.php}"> полтора часа настраивал шаблоны писем, а так установка и настройка 5 мин Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... roman21 Опубликовано: 8 апреля 2021 Поделиться Опубликовано: 8 апреля 2021 подскажите не планируется ли адаптация под oc1.5.6.4 ? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... seregin Опубликовано: 8 апреля 2021 Автор Поделиться Опубликовано: 8 апреля 2021 5 часов назад, roman21 сказал: подскажите не планируется ли адаптация под oc1.5.6.4 ? Под 1.5 не будет. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 2 месяца спустя... Yureka Опубликовано: 22 июня 2021 Поделиться Опубликовано: 22 июня 2021 Добрый день. Переменные для оповещений об изменении статуса товаров (например {product_url} ) могут быть в виде ссылок, чтобы получатель уведомления из письма мог сразу на ссылку нажать и перейти к товару на сайте? Или у меня что-то не правильно установилось? Ссылки просто в виде текста в письме. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... seregin Опубликовано: 22 июня 2021 Автор Поделиться Опубликовано: 22 июня 2021 3 часа назад, Yureka сказал: Добрый день. Переменные для оповещений об изменении статуса товаров (например {product_url} ) могут быть в виде ссылок, чтобы получатель уведомления из письма мог сразу на ссылку нажать и перейти к товару на сайте? Или у меня что-то не правильно установилось? Ссылки просто в виде текста в письме. Письмо в html, если нужны ссылки, то надо добавляйте <a href="{product_url}">{product_name}</a> 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 2 месяца спустя... niger Опубликовано: 25 августа 2021 Поделиться Опубликовано: 25 августа 2021 (изменено) В 08.04.2021 в 15:20, roman21 сказал: подскажите не планируется ли адаптация под oc1.5.6.4 ? я когда-то давно на форума находил для 1.5. И там все просто, только внешний вид подправить нужно было и немного по vqmod пройтись. И cron делал для него даже. Чтобы по крону проверял и отправлял письма. Только вот найти бы, Так как делал это 4 года назад. Вот этот вроде А крон уже делал самостоятельно Делал папочку крон в корне сайта. Туда клал файлик cron.php C вот таким содержимым Он в этой же папочке делает логгирование выполнения в файлик avails.txt <?php $fs = fopen('avails.txt', 'ab+'); fwrite($fs, date('Y-m-d H:i:s').' Запуск крона' ."\n"); fclose($fs); if (is_file('../admin/config.php')) { require_once('../admin/config.php'); } // Startup require_once DIR_SYSTEM.'startup.php'; // Registry $registry = new Registry(); // Config $config = new Config(); $registry->set('config', $config); // Database $db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE); $registry->set('db', $db); // Settings $query = $db->query("SELECT * FROM " . DB_PREFIX . "setting WHERE store_id = '0'"); foreach ($query->rows as $setting) { if (!$setting['serialized']) { $config->set($setting['key'], $setting['value']); } else { $config->set($setting['key'], unserialize($setting['value'])); } } // Loader $loader = new Loader($registry); $registry->set('load', $loader); // Front Controller $controller = new Front($registry); // Url $url = new Url(HTTP_SERVER, $config->get('config_secure') ? HTTPS_SERVER : HTTP_SERVER); $registry->set('url', $url); // SEO URL's if (!$seo_type = $config->get('config_seo_url_type')) { $seo_type = 'seo_url'; } $controller->addPreAction(new Action('common/' . $seo_type)); // Language $languages = array(); $query = $db->query("SELECT * FROM `" . DB_PREFIX . "language`"); foreach ($query->rows as $result) { $languages[$result['code']] = $result; } $config->set('config_language_id', $languages[$config->get('config_admin_language')]['language_id']); // Language $language = new Language($languages[$config->get('config_admin_language')]['directory']); $language->load($languages[$config->get('config_admin_language')]['directory']); $registry->set('language', $language); //availability function changeMailStatus($db, $id, $status) { if ($db->query("UPDATE " . DB_PREFIX . "avail SET status = '" . (int) $status . "' WHERE id = '" . (int) $id . "'")) { return true; } else { return false; } } $notify = $db->query("select * from " . DB_PREFIX . "product p, " . DB_PREFIX. "avail a where p.quantity >= 2 AND p.product_id = a.product_id AND a.status = 0"); $notify = $notify->rows; $lang = $loader->language('module/avail'); $i = 0; if (!empty($notify)) { foreach ( $notify as $info ) { $product_link = $url->link("product/product", "product_id=" . $info['product_id']); $mail = new Mail(); $mail->protocol = $config->get('config_mail_protocol'); $mail->parameter = $config->get('config_mail_parameter'); $mail->hostname = $config->get('config_smtp_host'); $mail->username = $config->get('config_smtp_username'); $mail->password = $config->get('config_smtp_password'); $mail->port = $config->get('config_smtp_port'); $mail->timeout = $config->get('config_smtp_timeout'); $mail->setTo($info['email']); $mail->setFrom($config->get('config_email')); $mail->setSender('\''.$lang['email_subject'].'\''); $mail->setSubject(html_entity_decode(sprintf($lang['email_subject'], $info['name'], ENT_QUOTES, 'UTF-8'))); $mail_text = "<!DOCTYPE html><html><head><meta http-equiv=«Content-Type» content=«text/html; charset=utf-8»></head><body>"; $mail_text .="<p>" . html_entity_decode($info['name'].', '.$lang['text_mail_send']. "</p>"); $mail_text .= "<p>" . $lang['text_product'] .': ' . $info['product'] . "</p>"; $mail_text .= "<p>" . $lang['text_link_page'] . ": " . " <a href=" . $product_link . ">" . $info['product'] . "</a></p>"; $mail_text .= "<p>" . $lang['text_price'] . ': ' . $info['price'] . "</p></body></html>"; $mail->setHtml($mail_text); $mail->send(); $change_mail_status = changeMailStatus($db,$info['id'],1); if ($change_mail_status === true){ $i++; }else{ $avail_error = fopen('avails.txt', 'ab+'); fwrite($avail_error , date('Y-m-d H:i:s').' --- Не удалось обновить статус после отправки письма'."\n"); fclose($avail_error); } } echo 'OK!'; $avail_logs = fopen('avails.txt', 'ab+'); fwrite($avail_logs , date('Y-m-d H:i:s').' --- Отправлено:'.' '.$i.' писем'."\n"); fclose($avail_logs); } ?> Ну и понятно, на сервере делает cron который дергает этот файлик. и у вас обновляется все автоматом и рассылается. а в логе потом можно глянуть что происходило Я ставил крон раз в час, после синхронизации остатков с 1С. И видно сработал ли крон, и сколько писем было отправлено. Правда понятно файлик нужно периодически удалять, чтобы не разрастался 2019-08-20 09:30:03 Запуск крона 2019-08-20 10:30:02 Запуск крона 2019-08-20 10:30:02 --- Отправлено: 2 писем 2019-08-20 11:30:07 Запуск крона 2019-08-20 11:30:08 --- Отправлено: 12 писем 2019-08-20 12:30:06 Запуск крона 2019-08-20 12:30:07 --- Отправлено: 3 писем Изменено 25 августа 2021 пользователем niger добавил инструкцию Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Назад 1 2 3 4 Вперёд Страница 4 из 4 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 10 Перейти к списку тем Похожие публикации Модуль Telegram уведомления [Поддержка] 1 2 3 4 10 Автор: Bn174uk, 24 февраля 2018 уведомление telegram (и ещё 14) Теги: уведомление telegram заказы отзывы новый пользователь статус заказа viber вайбер возврат товара потерянный заказ телеграм смс discord sms уведомление смс уведомление телеграм уведомление о заказах 230 ответов 31 888 просмотров Bn174uk В понедельник в 08:46 Модуль Viber уведомления [Поддержка] 1 2 3 Автор: Bn174uk, 30 августа 2018 уведомление telegram (и ещё 8) Теги: уведомление telegram заказы отзывы статус заказа новый пользователь вконтакте viber вайбер потерянный заказ 62 ответа 15 292 просмотра Bn174uk 3 декабря 2022 Модуль OCDEV.pro - СМС (SMS) уведомления для Opencart 2.x - 3.x [Поддержка] 1 2 3 4 Автор: ocdev_pro, 7 апреля 2019 смс смски (и ещё 12) Теги: смс смски смс sms смс opencart смс шлюз смс гейт смс клиенту смс рассылка смс шлюз sms gate смс коммерция смс статус смс оповещение смс уведомления смс-уведомление 97 ответов 11 883 просмотра ocdev_pro 12 января Модуль Автоматическое изменение статуса заказа и уведомление [Поддержка] 1 2 3 4 5 Автор: chukcha, 13 февраля 2018 статус заказа изменение статуса заказа (и ещё 4) Теги: статус заказа изменение статуса заказа изменеие статуса по времени письмо о смене статуса статус замовлення зміна стутусу замовлення 106 ответов 13 133 просмотра chukcha 25 декабря 2022 oc-max [Поддержка] "Укрпочта API" - модуль доставки для OpenCart 1 2 3 4 17 Автор: Prorab337, 14 октября 2018 укрпочта укрпочта апи (и ещё 6) Теги: укрпочта укрпочта апи укрпочта api api печать гакладных модул доставки доставка модуль доставки укрпочта 404 ответа 53 176 просмотров Glade 1 час назад Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Поддержка и ответы на вопросы Модули и дополнения Письма, почта, рассылки, sms Модуль Opencart: Уведомление о поступлении товара [Поддержка] Покупателям Оплата дополнений физическими лицами Оплата дополнений юридическими лицами Политика возвратов Разработчикам Регламент размещения дополнений Регламент продаж и поддержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каталога дополнений Урегулирование споров по авторским правам Полезная информация Публичная оферта Политика возвратов Политика конфиденциальности Платежная политика Политика Передачи Персональных Данных Политика прозрачности Последние дополнения Chameleon - адаптивный универсальный шаблон + Быстрый Старт Автор: 29aleksey Wayforpay API оплата для Opencart 2.3 Автор: bogdan281989 TgMarket - Модуль интернет магазина в телеграмме. Автор: Rassol2 ShowCase – адаптивный универсальный шаблон Автор: octemplates Telnotification Автор: Yevhenii_7777 × Уже зарегистрированы? Войти Регистрация Раздел покупок Назад Приобретенные дополнения Ваши счета Список желаний Альтернативные контакты Форум Новости ocStore Назад Официальный сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Скачать ocStore Документация История версий ocStore Блоги Модули Шаблоны Назад Бесплатные шаблоны Платные шаблоны Услуги FAQ OpenCart.Pro Назад Демо Купить Сравнение × Создать... Важная информация На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности. Я принимаю
almir Опубликовано: 12 февраля 2021 Поделиться Опубликовано: 12 февраля 2021 1 час назад, seregin сказал: Сейчас получается не срабатывает? Это я к тому что не нужно было править импорт, сейчас нужна такая функция на шаблоне по дефолту. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
seregin Опубликовано: 12 февраля 2021 Автор Поделиться Опубликовано: 12 февраля 2021 48 минут назад, almir сказал: Это я к тому что не нужно было править импорт, сейчас нужна такая функция на шаблоне по дефолту. Ну как я до этого и писал, нужно дорабатывать модуль экспорта csv Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 2 недели спустя... wgadget Опубликовано: 22 февраля 2021 Поделиться Опубликовано: 22 февраля 2021 В 28.01.2021 в 20:49, globaltrading сказал: Здравствуйте. Что было в последнем обновлении от 27.01.2021 ? @seregin Подскажите по истории обновления, что было добавлено в какую версию. Не нашли у вас этой информации. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... seregin Опубликовано: 22 февраля 2021 Автор Поделиться Опубликовано: 22 февраля 2021 2 часа назад, wgadget сказал: @seregin Подскажите по истории обновления, что было добавлено в какую версию. Не нашли у вас этой информации. Смотрите в файле CHANGELOG.txt 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 1 месяц спустя... roman21 Опубликовано: 8 апреля 2021 Поделиться Опубликовано: 8 апреля 2021 Спасибо, версия opencart-cms.ru 2.3.0.2.5 - все работает отлично из коробки Добавил страницы в модификаторе (Популярні товари mostviewed.php, Хіти продажів bestseller.php, Новинки latest.php - выводятся в подвале на главной странице, не уверен есть ли такое на чистом oc) строчка 388 : <file path="catalog/controller/product/{category.php,search.php,special.php,mostviewed.php,latest.php,bestseller.php}"> полтора часа настраивал шаблоны писем, а так установка и настройка 5 мин Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... roman21 Опубликовано: 8 апреля 2021 Поделиться Опубликовано: 8 апреля 2021 подскажите не планируется ли адаптация под oc1.5.6.4 ? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... seregin Опубликовано: 8 апреля 2021 Автор Поделиться Опубликовано: 8 апреля 2021 5 часов назад, roman21 сказал: подскажите не планируется ли адаптация под oc1.5.6.4 ? Под 1.5 не будет. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 2 месяца спустя... Yureka Опубликовано: 22 июня 2021 Поделиться Опубликовано: 22 июня 2021 Добрый день. Переменные для оповещений об изменении статуса товаров (например {product_url} ) могут быть в виде ссылок, чтобы получатель уведомления из письма мог сразу на ссылку нажать и перейти к товару на сайте? Или у меня что-то не правильно установилось? Ссылки просто в виде текста в письме. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... seregin Опубликовано: 22 июня 2021 Автор Поделиться Опубликовано: 22 июня 2021 3 часа назад, Yureka сказал: Добрый день. Переменные для оповещений об изменении статуса товаров (например {product_url} ) могут быть в виде ссылок, чтобы получатель уведомления из письма мог сразу на ссылку нажать и перейти к товару на сайте? Или у меня что-то не правильно установилось? Ссылки просто в виде текста в письме. Письмо в html, если нужны ссылки, то надо добавляйте <a href="{product_url}">{product_name}</a> 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 2 месяца спустя... niger Опубликовано: 25 августа 2021 Поделиться Опубликовано: 25 августа 2021 (изменено) В 08.04.2021 в 15:20, roman21 сказал: подскажите не планируется ли адаптация под oc1.5.6.4 ? я когда-то давно на форума находил для 1.5. И там все просто, только внешний вид подправить нужно было и немного по vqmod пройтись. И cron делал для него даже. Чтобы по крону проверял и отправлял письма. Только вот найти бы, Так как делал это 4 года назад. Вот этот вроде А крон уже делал самостоятельно Делал папочку крон в корне сайта. Туда клал файлик cron.php C вот таким содержимым Он в этой же папочке делает логгирование выполнения в файлик avails.txt <?php $fs = fopen('avails.txt', 'ab+'); fwrite($fs, date('Y-m-d H:i:s').' Запуск крона' ."\n"); fclose($fs); if (is_file('../admin/config.php')) { require_once('../admin/config.php'); } // Startup require_once DIR_SYSTEM.'startup.php'; // Registry $registry = new Registry(); // Config $config = new Config(); $registry->set('config', $config); // Database $db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE); $registry->set('db', $db); // Settings $query = $db->query("SELECT * FROM " . DB_PREFIX . "setting WHERE store_id = '0'"); foreach ($query->rows as $setting) { if (!$setting['serialized']) { $config->set($setting['key'], $setting['value']); } else { $config->set($setting['key'], unserialize($setting['value'])); } } // Loader $loader = new Loader($registry); $registry->set('load', $loader); // Front Controller $controller = new Front($registry); // Url $url = new Url(HTTP_SERVER, $config->get('config_secure') ? HTTPS_SERVER : HTTP_SERVER); $registry->set('url', $url); // SEO URL's if (!$seo_type = $config->get('config_seo_url_type')) { $seo_type = 'seo_url'; } $controller->addPreAction(new Action('common/' . $seo_type)); // Language $languages = array(); $query = $db->query("SELECT * FROM `" . DB_PREFIX . "language`"); foreach ($query->rows as $result) { $languages[$result['code']] = $result; } $config->set('config_language_id', $languages[$config->get('config_admin_language')]['language_id']); // Language $language = new Language($languages[$config->get('config_admin_language')]['directory']); $language->load($languages[$config->get('config_admin_language')]['directory']); $registry->set('language', $language); //availability function changeMailStatus($db, $id, $status) { if ($db->query("UPDATE " . DB_PREFIX . "avail SET status = '" . (int) $status . "' WHERE id = '" . (int) $id . "'")) { return true; } else { return false; } } $notify = $db->query("select * from " . DB_PREFIX . "product p, " . DB_PREFIX. "avail a where p.quantity >= 2 AND p.product_id = a.product_id AND a.status = 0"); $notify = $notify->rows; $lang = $loader->language('module/avail'); $i = 0; if (!empty($notify)) { foreach ( $notify as $info ) { $product_link = $url->link("product/product", "product_id=" . $info['product_id']); $mail = new Mail(); $mail->protocol = $config->get('config_mail_protocol'); $mail->parameter = $config->get('config_mail_parameter'); $mail->hostname = $config->get('config_smtp_host'); $mail->username = $config->get('config_smtp_username'); $mail->password = $config->get('config_smtp_password'); $mail->port = $config->get('config_smtp_port'); $mail->timeout = $config->get('config_smtp_timeout'); $mail->setTo($info['email']); $mail->setFrom($config->get('config_email')); $mail->setSender('\''.$lang['email_subject'].'\''); $mail->setSubject(html_entity_decode(sprintf($lang['email_subject'], $info['name'], ENT_QUOTES, 'UTF-8'))); $mail_text = "<!DOCTYPE html><html><head><meta http-equiv=«Content-Type» content=«text/html; charset=utf-8»></head><body>"; $mail_text .="<p>" . html_entity_decode($info['name'].', '.$lang['text_mail_send']. "</p>"); $mail_text .= "<p>" . $lang['text_product'] .': ' . $info['product'] . "</p>"; $mail_text .= "<p>" . $lang['text_link_page'] . ": " . " <a href=" . $product_link . ">" . $info['product'] . "</a></p>"; $mail_text .= "<p>" . $lang['text_price'] . ': ' . $info['price'] . "</p></body></html>"; $mail->setHtml($mail_text); $mail->send(); $change_mail_status = changeMailStatus($db,$info['id'],1); if ($change_mail_status === true){ $i++; }else{ $avail_error = fopen('avails.txt', 'ab+'); fwrite($avail_error , date('Y-m-d H:i:s').' --- Не удалось обновить статус после отправки письма'."\n"); fclose($avail_error); } } echo 'OK!'; $avail_logs = fopen('avails.txt', 'ab+'); fwrite($avail_logs , date('Y-m-d H:i:s').' --- Отправлено:'.' '.$i.' писем'."\n"); fclose($avail_logs); } ?> Ну и понятно, на сервере делает cron который дергает этот файлик. и у вас обновляется все автоматом и рассылается. а в логе потом можно глянуть что происходило Я ставил крон раз в час, после синхронизации остатков с 1С. И видно сработал ли крон, и сколько писем было отправлено. Правда понятно файлик нужно периодически удалять, чтобы не разрастался 2019-08-20 09:30:03 Запуск крона 2019-08-20 10:30:02 Запуск крона 2019-08-20 10:30:02 --- Отправлено: 2 писем 2019-08-20 11:30:07 Запуск крона 2019-08-20 11:30:08 --- Отправлено: 12 писем 2019-08-20 12:30:06 Запуск крона 2019-08-20 12:30:07 --- Отправлено: 3 писем Изменено 25 августа 2021 пользователем niger добавил инструкцию Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Назад 1 2 3 4 Вперёд Страница 4 из 4 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 10 Перейти к списку тем Похожие публикации Модуль Telegram уведомления [Поддержка] 1 2 3 4 10 Автор: Bn174uk, 24 февраля 2018 уведомление telegram (и ещё 14) Теги: уведомление telegram заказы отзывы новый пользователь статус заказа viber вайбер возврат товара потерянный заказ телеграм смс discord sms уведомление смс уведомление телеграм уведомление о заказах 230 ответов 31 888 просмотров Bn174uk В понедельник в 08:46 Модуль Viber уведомления [Поддержка] 1 2 3 Автор: Bn174uk, 30 августа 2018 уведомление telegram (и ещё 8) Теги: уведомление telegram заказы отзывы статус заказа новый пользователь вконтакте viber вайбер потерянный заказ 62 ответа 15 292 просмотра Bn174uk 3 декабря 2022 Модуль OCDEV.pro - СМС (SMS) уведомления для Opencart 2.x - 3.x [Поддержка] 1 2 3 4 Автор: ocdev_pro, 7 апреля 2019 смс смски (и ещё 12) Теги: смс смски смс sms смс opencart смс шлюз смс гейт смс клиенту смс рассылка смс шлюз sms gate смс коммерция смс статус смс оповещение смс уведомления смс-уведомление 97 ответов 11 883 просмотра ocdev_pro 12 января Модуль Автоматическое изменение статуса заказа и уведомление [Поддержка] 1 2 3 4 5 Автор: chukcha, 13 февраля 2018 статус заказа изменение статуса заказа (и ещё 4) Теги: статус заказа изменение статуса заказа изменеие статуса по времени письмо о смене статуса статус замовлення зміна стутусу замовлення 106 ответов 13 133 просмотра chukcha 25 декабря 2022 oc-max [Поддержка] "Укрпочта API" - модуль доставки для OpenCart 1 2 3 4 17 Автор: Prorab337, 14 октября 2018 укрпочта укрпочта апи (и ещё 6) Теги: укрпочта укрпочта апи укрпочта api api печать гакладных модул доставки доставка модуль доставки укрпочта 404 ответа 53 176 просмотров Glade 1 час назад Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Поддержка и ответы на вопросы Модули и дополнения Письма, почта, рассылки, sms Модуль Opencart: Уведомление о поступлении товара [Поддержка] Покупателям Оплата дополнений физическими лицами Оплата дополнений юридическими лицами Политика возвратов Разработчикам Регламент размещения дополнений Регламент продаж и поддержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каталога дополнений Урегулирование споров по авторским правам Полезная информация Публичная оферта Политика возвратов Политика конфиденциальности Платежная политика Политика Передачи Персональных Данных Политика прозрачности Последние дополнения Chameleon - адаптивный универсальный шаблон + Быстрый Старт Автор: 29aleksey Wayforpay API оплата для Opencart 2.3 Автор: bogdan281989 TgMarket - Модуль интернет магазина в телеграмме. Автор: Rassol2 ShowCase – адаптивный универсальный шаблон Автор: octemplates Telnotification Автор: Yevhenii_7777
wgadget Опубликовано: 22 февраля 2021 Поделиться Опубликовано: 22 февраля 2021 В 28.01.2021 в 20:49, globaltrading сказал: Здравствуйте. Что было в последнем обновлении от 27.01.2021 ? @seregin Подскажите по истории обновления, что было добавлено в какую версию. Не нашли у вас этой информации. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
seregin Опубликовано: 22 февраля 2021 Автор Поделиться Опубликовано: 22 февраля 2021 2 часа назад, wgadget сказал: @seregin Подскажите по истории обновления, что было добавлено в какую версию. Не нашли у вас этой информации. Смотрите в файле CHANGELOG.txt 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 1 месяц спустя... roman21 Опубликовано: 8 апреля 2021 Поделиться Опубликовано: 8 апреля 2021 Спасибо, версия opencart-cms.ru 2.3.0.2.5 - все работает отлично из коробки Добавил страницы в модификаторе (Популярні товари mostviewed.php, Хіти продажів bestseller.php, Новинки latest.php - выводятся в подвале на главной странице, не уверен есть ли такое на чистом oc) строчка 388 : <file path="catalog/controller/product/{category.php,search.php,special.php,mostviewed.php,latest.php,bestseller.php}"> полтора часа настраивал шаблоны писем, а так установка и настройка 5 мин Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... roman21 Опубликовано: 8 апреля 2021 Поделиться Опубликовано: 8 апреля 2021 подскажите не планируется ли адаптация под oc1.5.6.4 ? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... seregin Опубликовано: 8 апреля 2021 Автор Поделиться Опубликовано: 8 апреля 2021 5 часов назад, roman21 сказал: подскажите не планируется ли адаптация под oc1.5.6.4 ? Под 1.5 не будет. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 2 месяца спустя... Yureka Опубликовано: 22 июня 2021 Поделиться Опубликовано: 22 июня 2021 Добрый день. Переменные для оповещений об изменении статуса товаров (например {product_url} ) могут быть в виде ссылок, чтобы получатель уведомления из письма мог сразу на ссылку нажать и перейти к товару на сайте? Или у меня что-то не правильно установилось? Ссылки просто в виде текста в письме. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... seregin Опубликовано: 22 июня 2021 Автор Поделиться Опубликовано: 22 июня 2021 3 часа назад, Yureka сказал: Добрый день. Переменные для оповещений об изменении статуса товаров (например {product_url} ) могут быть в виде ссылок, чтобы получатель уведомления из письма мог сразу на ссылку нажать и перейти к товару на сайте? Или у меня что-то не правильно установилось? Ссылки просто в виде текста в письме. Письмо в html, если нужны ссылки, то надо добавляйте <a href="{product_url}">{product_name}</a> 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 2 месяца спустя... niger Опубликовано: 25 августа 2021 Поделиться Опубликовано: 25 августа 2021 (изменено) В 08.04.2021 в 15:20, roman21 сказал: подскажите не планируется ли адаптация под oc1.5.6.4 ? я когда-то давно на форума находил для 1.5. И там все просто, только внешний вид подправить нужно было и немного по vqmod пройтись. И cron делал для него даже. Чтобы по крону проверял и отправлял письма. Только вот найти бы, Так как делал это 4 года назад. Вот этот вроде А крон уже делал самостоятельно Делал папочку крон в корне сайта. Туда клал файлик cron.php C вот таким содержимым Он в этой же папочке делает логгирование выполнения в файлик avails.txt <?php $fs = fopen('avails.txt', 'ab+'); fwrite($fs, date('Y-m-d H:i:s').' Запуск крона' ."\n"); fclose($fs); if (is_file('../admin/config.php')) { require_once('../admin/config.php'); } // Startup require_once DIR_SYSTEM.'startup.php'; // Registry $registry = new Registry(); // Config $config = new Config(); $registry->set('config', $config); // Database $db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE); $registry->set('db', $db); // Settings $query = $db->query("SELECT * FROM " . DB_PREFIX . "setting WHERE store_id = '0'"); foreach ($query->rows as $setting) { if (!$setting['serialized']) { $config->set($setting['key'], $setting['value']); } else { $config->set($setting['key'], unserialize($setting['value'])); } } // Loader $loader = new Loader($registry); $registry->set('load', $loader); // Front Controller $controller = new Front($registry); // Url $url = new Url(HTTP_SERVER, $config->get('config_secure') ? HTTPS_SERVER : HTTP_SERVER); $registry->set('url', $url); // SEO URL's if (!$seo_type = $config->get('config_seo_url_type')) { $seo_type = 'seo_url'; } $controller->addPreAction(new Action('common/' . $seo_type)); // Language $languages = array(); $query = $db->query("SELECT * FROM `" . DB_PREFIX . "language`"); foreach ($query->rows as $result) { $languages[$result['code']] = $result; } $config->set('config_language_id', $languages[$config->get('config_admin_language')]['language_id']); // Language $language = new Language($languages[$config->get('config_admin_language')]['directory']); $language->load($languages[$config->get('config_admin_language')]['directory']); $registry->set('language', $language); //availability function changeMailStatus($db, $id, $status) { if ($db->query("UPDATE " . DB_PREFIX . "avail SET status = '" . (int) $status . "' WHERE id = '" . (int) $id . "'")) { return true; } else { return false; } } $notify = $db->query("select * from " . DB_PREFIX . "product p, " . DB_PREFIX. "avail a where p.quantity >= 2 AND p.product_id = a.product_id AND a.status = 0"); $notify = $notify->rows; $lang = $loader->language('module/avail'); $i = 0; if (!empty($notify)) { foreach ( $notify as $info ) { $product_link = $url->link("product/product", "product_id=" . $info['product_id']); $mail = new Mail(); $mail->protocol = $config->get('config_mail_protocol'); $mail->parameter = $config->get('config_mail_parameter'); $mail->hostname = $config->get('config_smtp_host'); $mail->username = $config->get('config_smtp_username'); $mail->password = $config->get('config_smtp_password'); $mail->port = $config->get('config_smtp_port'); $mail->timeout = $config->get('config_smtp_timeout'); $mail->setTo($info['email']); $mail->setFrom($config->get('config_email')); $mail->setSender('\''.$lang['email_subject'].'\''); $mail->setSubject(html_entity_decode(sprintf($lang['email_subject'], $info['name'], ENT_QUOTES, 'UTF-8'))); $mail_text = "<!DOCTYPE html><html><head><meta http-equiv=«Content-Type» content=«text/html; charset=utf-8»></head><body>"; $mail_text .="<p>" . html_entity_decode($info['name'].', '.$lang['text_mail_send']. "</p>"); $mail_text .= "<p>" . $lang['text_product'] .': ' . $info['product'] . "</p>"; $mail_text .= "<p>" . $lang['text_link_page'] . ": " . " <a href=" . $product_link . ">" . $info['product'] . "</a></p>"; $mail_text .= "<p>" . $lang['text_price'] . ': ' . $info['price'] . "</p></body></html>"; $mail->setHtml($mail_text); $mail->send(); $change_mail_status = changeMailStatus($db,$info['id'],1); if ($change_mail_status === true){ $i++; }else{ $avail_error = fopen('avails.txt', 'ab+'); fwrite($avail_error , date('Y-m-d H:i:s').' --- Не удалось обновить статус после отправки письма'."\n"); fclose($avail_error); } } echo 'OK!'; $avail_logs = fopen('avails.txt', 'ab+'); fwrite($avail_logs , date('Y-m-d H:i:s').' --- Отправлено:'.' '.$i.' писем'."\n"); fclose($avail_logs); } ?> Ну и понятно, на сервере делает cron который дергает этот файлик. и у вас обновляется все автоматом и рассылается. а в логе потом можно глянуть что происходило Я ставил крон раз в час, после синхронизации остатков с 1С. И видно сработал ли крон, и сколько писем было отправлено. Правда понятно файлик нужно периодически удалять, чтобы не разрастался 2019-08-20 09:30:03 Запуск крона 2019-08-20 10:30:02 Запуск крона 2019-08-20 10:30:02 --- Отправлено: 2 писем 2019-08-20 11:30:07 Запуск крона 2019-08-20 11:30:08 --- Отправлено: 12 писем 2019-08-20 12:30:06 Запуск крона 2019-08-20 12:30:07 --- Отправлено: 3 писем Изменено 25 августа 2021 пользователем niger добавил инструкцию Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Назад 1 2 3 4 Вперёд Страница 4 из 4 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 10 Перейти к списку тем Похожие публикации Модуль Telegram уведомления [Поддержка] 1 2 3 4 10 Автор: Bn174uk, 24 февраля 2018 уведомление telegram (и ещё 14) Теги: уведомление telegram заказы отзывы новый пользователь статус заказа viber вайбер возврат товара потерянный заказ телеграм смс discord sms уведомление смс уведомление телеграм уведомление о заказах 230 ответов 31 888 просмотров Bn174uk В понедельник в 08:46 Модуль Viber уведомления [Поддержка] 1 2 3 Автор: Bn174uk, 30 августа 2018 уведомление telegram (и ещё 8) Теги: уведомление telegram заказы отзывы статус заказа новый пользователь вконтакте viber вайбер потерянный заказ 62 ответа 15 292 просмотра Bn174uk 3 декабря 2022 Модуль OCDEV.pro - СМС (SMS) уведомления для Opencart 2.x - 3.x [Поддержка] 1 2 3 4 Автор: ocdev_pro, 7 апреля 2019 смс смски (и ещё 12) Теги: смс смски смс sms смс opencart смс шлюз смс гейт смс клиенту смс рассылка смс шлюз sms gate смс коммерция смс статус смс оповещение смс уведомления смс-уведомление 97 ответов 11 883 просмотра ocdev_pro 12 января Модуль Автоматическое изменение статуса заказа и уведомление [Поддержка] 1 2 3 4 5 Автор: chukcha, 13 февраля 2018 статус заказа изменение статуса заказа (и ещё 4) Теги: статус заказа изменение статуса заказа изменеие статуса по времени письмо о смене статуса статус замовлення зміна стутусу замовлення 106 ответов 13 133 просмотра chukcha 25 декабря 2022 oc-max [Поддержка] "Укрпочта API" - модуль доставки для OpenCart 1 2 3 4 17 Автор: Prorab337, 14 октября 2018 укрпочта укрпочта апи (и ещё 6) Теги: укрпочта укрпочта апи укрпочта api api печать гакладных модул доставки доставка модуль доставки укрпочта 404 ответа 53 176 просмотров Glade 1 час назад Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Поддержка и ответы на вопросы Модули и дополнения Письма, почта, рассылки, sms Модуль Opencart: Уведомление о поступлении товара [Поддержка]
roman21 Опубликовано: 8 апреля 2021 Поделиться Опубликовано: 8 апреля 2021 Спасибо, версия opencart-cms.ru 2.3.0.2.5 - все работает отлично из коробки Добавил страницы в модификаторе (Популярні товари mostviewed.php, Хіти продажів bestseller.php, Новинки latest.php - выводятся в подвале на главной странице, не уверен есть ли такое на чистом oc) строчка 388 : <file path="catalog/controller/product/{category.php,search.php,special.php,mostviewed.php,latest.php,bestseller.php}"> полтора часа настраивал шаблоны писем, а так установка и настройка 5 мин Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
roman21 Опубликовано: 8 апреля 2021 Поделиться Опубликовано: 8 апреля 2021 подскажите не планируется ли адаптация под oc1.5.6.4 ? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
seregin Опубликовано: 8 апреля 2021 Автор Поделиться Опубликовано: 8 апреля 2021 5 часов назад, roman21 сказал: подскажите не планируется ли адаптация под oc1.5.6.4 ? Под 1.5 не будет. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 2 месяца спустя... Yureka Опубликовано: 22 июня 2021 Поделиться Опубликовано: 22 июня 2021 Добрый день. Переменные для оповещений об изменении статуса товаров (например {product_url} ) могут быть в виде ссылок, чтобы получатель уведомления из письма мог сразу на ссылку нажать и перейти к товару на сайте? Или у меня что-то не правильно установилось? Ссылки просто в виде текста в письме. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... seregin Опубликовано: 22 июня 2021 Автор Поделиться Опубликовано: 22 июня 2021 3 часа назад, Yureka сказал: Добрый день. Переменные для оповещений об изменении статуса товаров (например {product_url} ) могут быть в виде ссылок, чтобы получатель уведомления из письма мог сразу на ссылку нажать и перейти к товару на сайте? Или у меня что-то не правильно установилось? Ссылки просто в виде текста в письме. Письмо в html, если нужны ссылки, то надо добавляйте <a href="{product_url}">{product_name}</a> 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 2 месяца спустя... niger Опубликовано: 25 августа 2021 Поделиться Опубликовано: 25 августа 2021 (изменено) В 08.04.2021 в 15:20, roman21 сказал: подскажите не планируется ли адаптация под oc1.5.6.4 ? я когда-то давно на форума находил для 1.5. И там все просто, только внешний вид подправить нужно было и немного по vqmod пройтись. И cron делал для него даже. Чтобы по крону проверял и отправлял письма. Только вот найти бы, Так как делал это 4 года назад. Вот этот вроде А крон уже делал самостоятельно Делал папочку крон в корне сайта. Туда клал файлик cron.php C вот таким содержимым Он в этой же папочке делает логгирование выполнения в файлик avails.txt <?php $fs = fopen('avails.txt', 'ab+'); fwrite($fs, date('Y-m-d H:i:s').' Запуск крона' ."\n"); fclose($fs); if (is_file('../admin/config.php')) { require_once('../admin/config.php'); } // Startup require_once DIR_SYSTEM.'startup.php'; // Registry $registry = new Registry(); // Config $config = new Config(); $registry->set('config', $config); // Database $db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE); $registry->set('db', $db); // Settings $query = $db->query("SELECT * FROM " . DB_PREFIX . "setting WHERE store_id = '0'"); foreach ($query->rows as $setting) { if (!$setting['serialized']) { $config->set($setting['key'], $setting['value']); } else { $config->set($setting['key'], unserialize($setting['value'])); } } // Loader $loader = new Loader($registry); $registry->set('load', $loader); // Front Controller $controller = new Front($registry); // Url $url = new Url(HTTP_SERVER, $config->get('config_secure') ? HTTPS_SERVER : HTTP_SERVER); $registry->set('url', $url); // SEO URL's if (!$seo_type = $config->get('config_seo_url_type')) { $seo_type = 'seo_url'; } $controller->addPreAction(new Action('common/' . $seo_type)); // Language $languages = array(); $query = $db->query("SELECT * FROM `" . DB_PREFIX . "language`"); foreach ($query->rows as $result) { $languages[$result['code']] = $result; } $config->set('config_language_id', $languages[$config->get('config_admin_language')]['language_id']); // Language $language = new Language($languages[$config->get('config_admin_language')]['directory']); $language->load($languages[$config->get('config_admin_language')]['directory']); $registry->set('language', $language); //availability function changeMailStatus($db, $id, $status) { if ($db->query("UPDATE " . DB_PREFIX . "avail SET status = '" . (int) $status . "' WHERE id = '" . (int) $id . "'")) { return true; } else { return false; } } $notify = $db->query("select * from " . DB_PREFIX . "product p, " . DB_PREFIX. "avail a where p.quantity >= 2 AND p.product_id = a.product_id AND a.status = 0"); $notify = $notify->rows; $lang = $loader->language('module/avail'); $i = 0; if (!empty($notify)) { foreach ( $notify as $info ) { $product_link = $url->link("product/product", "product_id=" . $info['product_id']); $mail = new Mail(); $mail->protocol = $config->get('config_mail_protocol'); $mail->parameter = $config->get('config_mail_parameter'); $mail->hostname = $config->get('config_smtp_host'); $mail->username = $config->get('config_smtp_username'); $mail->password = $config->get('config_smtp_password'); $mail->port = $config->get('config_smtp_port'); $mail->timeout = $config->get('config_smtp_timeout'); $mail->setTo($info['email']); $mail->setFrom($config->get('config_email')); $mail->setSender('\''.$lang['email_subject'].'\''); $mail->setSubject(html_entity_decode(sprintf($lang['email_subject'], $info['name'], ENT_QUOTES, 'UTF-8'))); $mail_text = "<!DOCTYPE html><html><head><meta http-equiv=«Content-Type» content=«text/html; charset=utf-8»></head><body>"; $mail_text .="<p>" . html_entity_decode($info['name'].', '.$lang['text_mail_send']. "</p>"); $mail_text .= "<p>" . $lang['text_product'] .': ' . $info['product'] . "</p>"; $mail_text .= "<p>" . $lang['text_link_page'] . ": " . " <a href=" . $product_link . ">" . $info['product'] . "</a></p>"; $mail_text .= "<p>" . $lang['text_price'] . ': ' . $info['price'] . "</p></body></html>"; $mail->setHtml($mail_text); $mail->send(); $change_mail_status = changeMailStatus($db,$info['id'],1); if ($change_mail_status === true){ $i++; }else{ $avail_error = fopen('avails.txt', 'ab+'); fwrite($avail_error , date('Y-m-d H:i:s').' --- Не удалось обновить статус после отправки письма'."\n"); fclose($avail_error); } } echo 'OK!'; $avail_logs = fopen('avails.txt', 'ab+'); fwrite($avail_logs , date('Y-m-d H:i:s').' --- Отправлено:'.' '.$i.' писем'."\n"); fclose($avail_logs); } ?> Ну и понятно, на сервере делает cron который дергает этот файлик. и у вас обновляется все автоматом и рассылается. а в логе потом можно глянуть что происходило Я ставил крон раз в час, после синхронизации остатков с 1С. И видно сработал ли крон, и сколько писем было отправлено. Правда понятно файлик нужно периодически удалять, чтобы не разрастался 2019-08-20 09:30:03 Запуск крона 2019-08-20 10:30:02 Запуск крона 2019-08-20 10:30:02 --- Отправлено: 2 писем 2019-08-20 11:30:07 Запуск крона 2019-08-20 11:30:08 --- Отправлено: 12 писем 2019-08-20 12:30:06 Запуск крона 2019-08-20 12:30:07 --- Отправлено: 3 писем Изменено 25 августа 2021 пользователем niger добавил инструкцию Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Назад 1 2 3 4 Вперёд Страница 4 из 4 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 10 Перейти к списку тем Похожие публикации Модуль Telegram уведомления [Поддержка] 1 2 3 4 10 Автор: Bn174uk, 24 февраля 2018 уведомление telegram (и ещё 14) Теги: уведомление telegram заказы отзывы новый пользователь статус заказа viber вайбер возврат товара потерянный заказ телеграм смс discord sms уведомление смс уведомление телеграм уведомление о заказах 230 ответов 31 888 просмотров Bn174uk В понедельник в 08:46 Модуль Viber уведомления [Поддержка] 1 2 3 Автор: Bn174uk, 30 августа 2018 уведомление telegram (и ещё 8) Теги: уведомление telegram заказы отзывы статус заказа новый пользователь вконтакте viber вайбер потерянный заказ 62 ответа 15 292 просмотра Bn174uk 3 декабря 2022 Модуль OCDEV.pro - СМС (SMS) уведомления для Opencart 2.x - 3.x [Поддержка] 1 2 3 4 Автор: ocdev_pro, 7 апреля 2019 смс смски (и ещё 12) Теги: смс смски смс sms смс opencart смс шлюз смс гейт смс клиенту смс рассылка смс шлюз sms gate смс коммерция смс статус смс оповещение смс уведомления смс-уведомление 97 ответов 11 883 просмотра ocdev_pro 12 января Модуль Автоматическое изменение статуса заказа и уведомление [Поддержка] 1 2 3 4 5 Автор: chukcha, 13 февраля 2018 статус заказа изменение статуса заказа (и ещё 4) Теги: статус заказа изменение статуса заказа изменеие статуса по времени письмо о смене статуса статус замовлення зміна стутусу замовлення 106 ответов 13 133 просмотра chukcha 25 декабря 2022 oc-max [Поддержка] "Укрпочта API" - модуль доставки для OpenCart 1 2 3 4 17 Автор: Prorab337, 14 октября 2018 укрпочта укрпочта апи (и ещё 6) Теги: укрпочта укрпочта апи укрпочта api api печать гакладных модул доставки доставка модуль доставки укрпочта 404 ответа 53 176 просмотров Glade 1 час назад Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу.
Yureka Опубликовано: 22 июня 2021 Поделиться Опубликовано: 22 июня 2021 Добрый день. Переменные для оповещений об изменении статуса товаров (например {product_url} ) могут быть в виде ссылок, чтобы получатель уведомления из письма мог сразу на ссылку нажать и перейти к товару на сайте? Или у меня что-то не правильно установилось? Ссылки просто в виде текста в письме. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
seregin Опубликовано: 22 июня 2021 Автор Поделиться Опубликовано: 22 июня 2021 3 часа назад, Yureka сказал: Добрый день. Переменные для оповещений об изменении статуса товаров (например {product_url} ) могут быть в виде ссылок, чтобы получатель уведомления из письма мог сразу на ссылку нажать и перейти к товару на сайте? Или у меня что-то не правильно установилось? Ссылки просто в виде текста в письме. Письмо в html, если нужны ссылки, то надо добавляйте <a href="{product_url}">{product_name}</a> 1 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 2 месяца спустя... niger Опубликовано: 25 августа 2021 Поделиться Опубликовано: 25 августа 2021 (изменено) В 08.04.2021 в 15:20, roman21 сказал: подскажите не планируется ли адаптация под oc1.5.6.4 ? я когда-то давно на форума находил для 1.5. И там все просто, только внешний вид подправить нужно было и немного по vqmod пройтись. И cron делал для него даже. Чтобы по крону проверял и отправлял письма. Только вот найти бы, Так как делал это 4 года назад. Вот этот вроде А крон уже делал самостоятельно Делал папочку крон в корне сайта. Туда клал файлик cron.php C вот таким содержимым Он в этой же папочке делает логгирование выполнения в файлик avails.txt <?php $fs = fopen('avails.txt', 'ab+'); fwrite($fs, date('Y-m-d H:i:s').' Запуск крона' ."\n"); fclose($fs); if (is_file('../admin/config.php')) { require_once('../admin/config.php'); } // Startup require_once DIR_SYSTEM.'startup.php'; // Registry $registry = new Registry(); // Config $config = new Config(); $registry->set('config', $config); // Database $db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE); $registry->set('db', $db); // Settings $query = $db->query("SELECT * FROM " . DB_PREFIX . "setting WHERE store_id = '0'"); foreach ($query->rows as $setting) { if (!$setting['serialized']) { $config->set($setting['key'], $setting['value']); } else { $config->set($setting['key'], unserialize($setting['value'])); } } // Loader $loader = new Loader($registry); $registry->set('load', $loader); // Front Controller $controller = new Front($registry); // Url $url = new Url(HTTP_SERVER, $config->get('config_secure') ? HTTPS_SERVER : HTTP_SERVER); $registry->set('url', $url); // SEO URL's if (!$seo_type = $config->get('config_seo_url_type')) { $seo_type = 'seo_url'; } $controller->addPreAction(new Action('common/' . $seo_type)); // Language $languages = array(); $query = $db->query("SELECT * FROM `" . DB_PREFIX . "language`"); foreach ($query->rows as $result) { $languages[$result['code']] = $result; } $config->set('config_language_id', $languages[$config->get('config_admin_language')]['language_id']); // Language $language = new Language($languages[$config->get('config_admin_language')]['directory']); $language->load($languages[$config->get('config_admin_language')]['directory']); $registry->set('language', $language); //availability function changeMailStatus($db, $id, $status) { if ($db->query("UPDATE " . DB_PREFIX . "avail SET status = '" . (int) $status . "' WHERE id = '" . (int) $id . "'")) { return true; } else { return false; } } $notify = $db->query("select * from " . DB_PREFIX . "product p, " . DB_PREFIX. "avail a where p.quantity >= 2 AND p.product_id = a.product_id AND a.status = 0"); $notify = $notify->rows; $lang = $loader->language('module/avail'); $i = 0; if (!empty($notify)) { foreach ( $notify as $info ) { $product_link = $url->link("product/product", "product_id=" . $info['product_id']); $mail = new Mail(); $mail->protocol = $config->get('config_mail_protocol'); $mail->parameter = $config->get('config_mail_parameter'); $mail->hostname = $config->get('config_smtp_host'); $mail->username = $config->get('config_smtp_username'); $mail->password = $config->get('config_smtp_password'); $mail->port = $config->get('config_smtp_port'); $mail->timeout = $config->get('config_smtp_timeout'); $mail->setTo($info['email']); $mail->setFrom($config->get('config_email')); $mail->setSender('\''.$lang['email_subject'].'\''); $mail->setSubject(html_entity_decode(sprintf($lang['email_subject'], $info['name'], ENT_QUOTES, 'UTF-8'))); $mail_text = "<!DOCTYPE html><html><head><meta http-equiv=«Content-Type» content=«text/html; charset=utf-8»></head><body>"; $mail_text .="<p>" . html_entity_decode($info['name'].', '.$lang['text_mail_send']. "</p>"); $mail_text .= "<p>" . $lang['text_product'] .': ' . $info['product'] . "</p>"; $mail_text .= "<p>" . $lang['text_link_page'] . ": " . " <a href=" . $product_link . ">" . $info['product'] . "</a></p>"; $mail_text .= "<p>" . $lang['text_price'] . ': ' . $info['price'] . "</p></body></html>"; $mail->setHtml($mail_text); $mail->send(); $change_mail_status = changeMailStatus($db,$info['id'],1); if ($change_mail_status === true){ $i++; }else{ $avail_error = fopen('avails.txt', 'ab+'); fwrite($avail_error , date('Y-m-d H:i:s').' --- Не удалось обновить статус после отправки письма'."\n"); fclose($avail_error); } } echo 'OK!'; $avail_logs = fopen('avails.txt', 'ab+'); fwrite($avail_logs , date('Y-m-d H:i:s').' --- Отправлено:'.' '.$i.' писем'."\n"); fclose($avail_logs); } ?> Ну и понятно, на сервере делает cron который дергает этот файлик. и у вас обновляется все автоматом и рассылается. а в логе потом можно глянуть что происходило Я ставил крон раз в час, после синхронизации остатков с 1С. И видно сработал ли крон, и сколько писем было отправлено. Правда понятно файлик нужно периодически удалять, чтобы не разрастался 2019-08-20 09:30:03 Запуск крона 2019-08-20 10:30:02 Запуск крона 2019-08-20 10:30:02 --- Отправлено: 2 писем 2019-08-20 11:30:07 Запуск крона 2019-08-20 11:30:08 --- Отправлено: 12 писем 2019-08-20 12:30:06 Запуск крона 2019-08-20 12:30:07 --- Отправлено: 3 писем Изменено 25 августа 2021 пользователем niger добавил инструкцию Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Назад 1 2 3 4 Вперёд Страница 4 из 4 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 10
niger Опубликовано: 25 августа 2021 Поделиться Опубликовано: 25 августа 2021 (изменено) В 08.04.2021 в 15:20, roman21 сказал: подскажите не планируется ли адаптация под oc1.5.6.4 ? я когда-то давно на форума находил для 1.5. И там все просто, только внешний вид подправить нужно было и немного по vqmod пройтись. И cron делал для него даже. Чтобы по крону проверял и отправлял письма. Только вот найти бы, Так как делал это 4 года назад. Вот этот вроде А крон уже делал самостоятельно Делал папочку крон в корне сайта. Туда клал файлик cron.php C вот таким содержимым Он в этой же папочке делает логгирование выполнения в файлик avails.txt <?php $fs = fopen('avails.txt', 'ab+'); fwrite($fs, date('Y-m-d H:i:s').' Запуск крона' ."\n"); fclose($fs); if (is_file('../admin/config.php')) { require_once('../admin/config.php'); } // Startup require_once DIR_SYSTEM.'startup.php'; // Registry $registry = new Registry(); // Config $config = new Config(); $registry->set('config', $config); // Database $db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE); $registry->set('db', $db); // Settings $query = $db->query("SELECT * FROM " . DB_PREFIX . "setting WHERE store_id = '0'"); foreach ($query->rows as $setting) { if (!$setting['serialized']) { $config->set($setting['key'], $setting['value']); } else { $config->set($setting['key'], unserialize($setting['value'])); } } // Loader $loader = new Loader($registry); $registry->set('load', $loader); // Front Controller $controller = new Front($registry); // Url $url = new Url(HTTP_SERVER, $config->get('config_secure') ? HTTPS_SERVER : HTTP_SERVER); $registry->set('url', $url); // SEO URL's if (!$seo_type = $config->get('config_seo_url_type')) { $seo_type = 'seo_url'; } $controller->addPreAction(new Action('common/' . $seo_type)); // Language $languages = array(); $query = $db->query("SELECT * FROM `" . DB_PREFIX . "language`"); foreach ($query->rows as $result) { $languages[$result['code']] = $result; } $config->set('config_language_id', $languages[$config->get('config_admin_language')]['language_id']); // Language $language = new Language($languages[$config->get('config_admin_language')]['directory']); $language->load($languages[$config->get('config_admin_language')]['directory']); $registry->set('language', $language); //availability function changeMailStatus($db, $id, $status) { if ($db->query("UPDATE " . DB_PREFIX . "avail SET status = '" . (int) $status . "' WHERE id = '" . (int) $id . "'")) { return true; } else { return false; } } $notify = $db->query("select * from " . DB_PREFIX . "product p, " . DB_PREFIX. "avail a where p.quantity >= 2 AND p.product_id = a.product_id AND a.status = 0"); $notify = $notify->rows; $lang = $loader->language('module/avail'); $i = 0; if (!empty($notify)) { foreach ( $notify as $info ) { $product_link = $url->link("product/product", "product_id=" . $info['product_id']); $mail = new Mail(); $mail->protocol = $config->get('config_mail_protocol'); $mail->parameter = $config->get('config_mail_parameter'); $mail->hostname = $config->get('config_smtp_host'); $mail->username = $config->get('config_smtp_username'); $mail->password = $config->get('config_smtp_password'); $mail->port = $config->get('config_smtp_port'); $mail->timeout = $config->get('config_smtp_timeout'); $mail->setTo($info['email']); $mail->setFrom($config->get('config_email')); $mail->setSender('\''.$lang['email_subject'].'\''); $mail->setSubject(html_entity_decode(sprintf($lang['email_subject'], $info['name'], ENT_QUOTES, 'UTF-8'))); $mail_text = "<!DOCTYPE html><html><head><meta http-equiv=«Content-Type» content=«text/html; charset=utf-8»></head><body>"; $mail_text .="<p>" . html_entity_decode($info['name'].', '.$lang['text_mail_send']. "</p>"); $mail_text .= "<p>" . $lang['text_product'] .': ' . $info['product'] . "</p>"; $mail_text .= "<p>" . $lang['text_link_page'] . ": " . " <a href=" . $product_link . ">" . $info['product'] . "</a></p>"; $mail_text .= "<p>" . $lang['text_price'] . ': ' . $info['price'] . "</p></body></html>"; $mail->setHtml($mail_text); $mail->send(); $change_mail_status = changeMailStatus($db,$info['id'],1); if ($change_mail_status === true){ $i++; }else{ $avail_error = fopen('avails.txt', 'ab+'); fwrite($avail_error , date('Y-m-d H:i:s').' --- Не удалось обновить статус после отправки письма'."\n"); fclose($avail_error); } } echo 'OK!'; $avail_logs = fopen('avails.txt', 'ab+'); fwrite($avail_logs , date('Y-m-d H:i:s').' --- Отправлено:'.' '.$i.' писем'."\n"); fclose($avail_logs); } ?> Ну и понятно, на сервере делает cron который дергает этот файлик. и у вас обновляется все автоматом и рассылается. а в логе потом можно глянуть что происходило Я ставил крон раз в час, после синхронизации остатков с 1С. И видно сработал ли крон, и сколько писем было отправлено. Правда понятно файлик нужно периодически удалять, чтобы не разрастался 2019-08-20 09:30:03 Запуск крона 2019-08-20 10:30:02 Запуск крона 2019-08-20 10:30:02 --- Отправлено: 2 писем 2019-08-20 11:30:07 Запуск крона 2019-08-20 11:30:08 --- Отправлено: 12 писем 2019-08-20 12:30:06 Запуск крона 2019-08-20 12:30:07 --- Отправлено: 3 писем Изменено 25 августа 2021 пользователем niger добавил инструкцию Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
Рекомендованные сообщения