globaltrading Опубліковано: 28 січня 2021 Share Опубліковано: 28 січня 2021 Здравствуйте. Что было в последнем обновлении от 27.01.2021 ? Надіслати Поділитися на інших сайтах More sharing options...
markvozniak Опубліковано: 9 лютого 2021 Share Опубліковано: 9 лютого 2021 В последнее время, примерно раз в неделю, какой-то спамерский бот забивает уведомления, по 50-100 за несколько минут. Валится куча писем. Причем пытается внедрить какой-то код через форму периодически. Защиту от спамеров не планируете прикрутить, хотя бы капчу? Надіслати Поділитися на інших сайтах More sharing options...
seregin Опубліковано: 10 лютого 2021 Автор Share Опубліковано: 10 лютого 2021 12 часов назад, markvozniak сказал: В последнее время, примерно раз в неделю, какой-то спамерский бот забивает уведомления, по 50-100 за несколько минут. Валится куча писем. Причем пытается внедрить какой-то код через форму периодически. Защиту от спамеров не планируете прикрутить, хотя бы капчу? Каптча в модуле стоит с самой первой версии. Надіслати Поділитися на інших сайтах More sharing options... almir Опубліковано: 11 лютого 2021 Share Опубліковано: 11 лютого 2021 В 15.12.2020 в 14:47, seregin сказал: Добрый день. Это надо дополнительно добавлять функцию в модуль импорта. Небольшое отступление, ставил на сайт шаблон Unishop (наверное в нем есть такой функционал), импорт CSV без правок, при обновлении срабатывало уведомление на почту покупателя. Надіслати Поділитися на інших сайтах More sharing options... seregin Опубліковано: 12 лютого 2021 Автор Share Опубліковано: 12 лютого 2021 15 часов назад, almir сказал: Небольшое отступление, ставил на сайт шаблон Unishop (наверное в нем есть такой функционал), импорт CSV без правок, при обновлении срабатывало уведомление на почту покупателя. Сейчас получается не срабатывает? Надіслати Поділитися на інших сайтах More sharing options... almir Опубліковано: 12 лютого 2021 Share Опубліковано: 12 лютого 2021 1 час назад, seregin сказал: Сейчас получается не срабатывает? Это я к тому что не нужно было править импорт, сейчас нужна такая функция на шаблоне по дефолту. Надіслати Поділитися на інших сайтах More sharing options... seregin Опубліковано: 12 лютого 2021 Автор Share Опубліковано: 12 лютого 2021 48 минут назад, almir сказал: Это я к тому что не нужно было править импорт, сейчас нужна такая функция на шаблоне по дефолту. Ну как я до этого и писал, нужно дорабатывать модуль экспорта csv Надіслати Поділитися на інших сайтах More sharing options... 2 weeks later... wgadget Опубліковано: 22 лютого 2021 Share Опубліковано: 22 лютого 2021 В 28.01.2021 в 20:49, globaltrading сказал: Здравствуйте. Что было в последнем обновлении от 27.01.2021 ? @seregin Подскажите по истории обновления, что было добавлено в какую версию. Не нашли у вас этой информации. Надіслати Поділитися на інших сайтах More sharing options... seregin Опубліковано: 22 лютого 2021 Автор Share Опубліковано: 22 лютого 2021 2 часа назад, wgadget сказал: @seregin Подскажите по истории обновления, что было добавлено в какую версию. Не нашли у вас этой информации. Смотрите в файле CHANGELOG.txt 1 Надіслати Поділитися на інших сайтах More sharing options... 1 month later... roman21 Опубліковано: 8 квітня 2021 Share Опубліковано: 8 квітня 2021 Спасибо, версия opencart.pro 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 мин Надіслати Поділитися на інших сайтах More sharing options... roman21 Опубліковано: 8 квітня 2021 Share Опубліковано: 8 квітня 2021 подскажите не планируется ли адаптация под oc1.5.6.4 ? Надіслати Поділитися на інших сайтах More sharing options... seregin Опубліковано: 8 квітня 2021 Автор Share Опубліковано: 8 квітня 2021 5 часов назад, roman21 сказал: подскажите не планируется ли адаптация под oc1.5.6.4 ? Под 1.5 не будет. Надіслати Поділитися на інших сайтах More sharing options... 2 months later... Yureka Опубліковано: 22 червня 2021 Share Опубліковано: 22 червня 2021 Добрый день. Переменные для оповещений об изменении статуса товаров (например {product_url} ) могут быть в виде ссылок, чтобы получатель уведомления из письма мог сразу на ссылку нажать и перейти к товару на сайте? Или у меня что-то не правильно установилось? Ссылки просто в виде текста в письме. Надіслати Поділитися на інших сайтах More sharing options... seregin Опубліковано: 22 червня 2021 Автор Share Опубліковано: 22 червня 2021 3 часа назад, Yureka сказал: Добрый день. Переменные для оповещений об изменении статуса товаров (например {product_url} ) могут быть в виде ссылок, чтобы получатель уведомления из письма мог сразу на ссылку нажать и перейти к товару на сайте? Или у меня что-то не правильно установилось? Ссылки просто в виде текста в письме. Письмо в html, если нужны ссылки, то надо добавляйте <a href="{product_url}">{product_name}</a> 1 Надіслати Поділитися на інших сайтах More sharing options... 2 months later... niger Опубліковано: 25 серпня 2021 Share Опубліковано: 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 добавил инструкцию Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 Вперед Сторінка 4 з 4 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 5 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Модулі та розширення Листи, пошта, розсилки, sms Модуль Opencart: Уведомление о поступлении товара [Поддержка] Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
almir Опубліковано: 11 лютого 2021 Share Опубліковано: 11 лютого 2021 В 15.12.2020 в 14:47, seregin сказал: Добрый день. Это надо дополнительно добавлять функцию в модуль импорта. Небольшое отступление, ставил на сайт шаблон Unishop (наверное в нем есть такой функционал), импорт CSV без правок, при обновлении срабатывало уведомление на почту покупателя. Надіслати Поділитися на інших сайтах More sharing options...
seregin Опубліковано: 12 лютого 2021 Автор Share Опубліковано: 12 лютого 2021 15 часов назад, almir сказал: Небольшое отступление, ставил на сайт шаблон Unishop (наверное в нем есть такой функционал), импорт CSV без правок, при обновлении срабатывало уведомление на почту покупателя. Сейчас получается не срабатывает? Надіслати Поділитися на інших сайтах More sharing options... almir Опубліковано: 12 лютого 2021 Share Опубліковано: 12 лютого 2021 1 час назад, seregin сказал: Сейчас получается не срабатывает? Это я к тому что не нужно было править импорт, сейчас нужна такая функция на шаблоне по дефолту. Надіслати Поділитися на інших сайтах More sharing options... seregin Опубліковано: 12 лютого 2021 Автор Share Опубліковано: 12 лютого 2021 48 минут назад, almir сказал: Это я к тому что не нужно было править импорт, сейчас нужна такая функция на шаблоне по дефолту. Ну как я до этого и писал, нужно дорабатывать модуль экспорта csv Надіслати Поділитися на інших сайтах More sharing options... 2 weeks later... wgadget Опубліковано: 22 лютого 2021 Share Опубліковано: 22 лютого 2021 В 28.01.2021 в 20:49, globaltrading сказал: Здравствуйте. Что было в последнем обновлении от 27.01.2021 ? @seregin Подскажите по истории обновления, что было добавлено в какую версию. Не нашли у вас этой информации. Надіслати Поділитися на інших сайтах More sharing options... seregin Опубліковано: 22 лютого 2021 Автор Share Опубліковано: 22 лютого 2021 2 часа назад, wgadget сказал: @seregin Подскажите по истории обновления, что было добавлено в какую версию. Не нашли у вас этой информации. Смотрите в файле CHANGELOG.txt 1 Надіслати Поділитися на інших сайтах More sharing options... 1 month later... roman21 Опубліковано: 8 квітня 2021 Share Опубліковано: 8 квітня 2021 Спасибо, версия opencart.pro 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 мин Надіслати Поділитися на інших сайтах More sharing options... roman21 Опубліковано: 8 квітня 2021 Share Опубліковано: 8 квітня 2021 подскажите не планируется ли адаптация под oc1.5.6.4 ? Надіслати Поділитися на інших сайтах More sharing options... seregin Опубліковано: 8 квітня 2021 Автор Share Опубліковано: 8 квітня 2021 5 часов назад, roman21 сказал: подскажите не планируется ли адаптация под oc1.5.6.4 ? Под 1.5 не будет. Надіслати Поділитися на інших сайтах More sharing options... 2 months later... Yureka Опубліковано: 22 червня 2021 Share Опубліковано: 22 червня 2021 Добрый день. Переменные для оповещений об изменении статуса товаров (например {product_url} ) могут быть в виде ссылок, чтобы получатель уведомления из письма мог сразу на ссылку нажать и перейти к товару на сайте? Или у меня что-то не правильно установилось? Ссылки просто в виде текста в письме. Надіслати Поділитися на інших сайтах More sharing options... seregin Опубліковано: 22 червня 2021 Автор Share Опубліковано: 22 червня 2021 3 часа назад, Yureka сказал: Добрый день. Переменные для оповещений об изменении статуса товаров (например {product_url} ) могут быть в виде ссылок, чтобы получатель уведомления из письма мог сразу на ссылку нажать и перейти к товару на сайте? Или у меня что-то не правильно установилось? Ссылки просто в виде текста в письме. Письмо в html, если нужны ссылки, то надо добавляйте <a href="{product_url}">{product_name}</a> 1 Надіслати Поділитися на інших сайтах More sharing options... 2 months later... niger Опубліковано: 25 серпня 2021 Share Опубліковано: 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 добавил инструкцию Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 Вперед Сторінка 4 з 4 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 5 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Модулі та розширення Листи, пошта, розсилки, sms Модуль Opencart: Уведомление о поступлении товара [Поддержка] Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
almir Опубліковано: 12 лютого 2021 Share Опубліковано: 12 лютого 2021 1 час назад, seregin сказал: Сейчас получается не срабатывает? Это я к тому что не нужно было править импорт, сейчас нужна такая функция на шаблоне по дефолту. Надіслати Поділитися на інших сайтах More sharing options...
seregin Опубліковано: 12 лютого 2021 Автор Share Опубліковано: 12 лютого 2021 48 минут назад, almir сказал: Это я к тому что не нужно было править импорт, сейчас нужна такая функция на шаблоне по дефолту. Ну как я до этого и писал, нужно дорабатывать модуль экспорта csv Надіслати Поділитися на інших сайтах More sharing options... 2 weeks later... wgadget Опубліковано: 22 лютого 2021 Share Опубліковано: 22 лютого 2021 В 28.01.2021 в 20:49, globaltrading сказал: Здравствуйте. Что было в последнем обновлении от 27.01.2021 ? @seregin Подскажите по истории обновления, что было добавлено в какую версию. Не нашли у вас этой информации. Надіслати Поділитися на інших сайтах More sharing options... seregin Опубліковано: 22 лютого 2021 Автор Share Опубліковано: 22 лютого 2021 2 часа назад, wgadget сказал: @seregin Подскажите по истории обновления, что было добавлено в какую версию. Не нашли у вас этой информации. Смотрите в файле CHANGELOG.txt 1 Надіслати Поділитися на інших сайтах More sharing options... 1 month later... roman21 Опубліковано: 8 квітня 2021 Share Опубліковано: 8 квітня 2021 Спасибо, версия opencart.pro 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 мин Надіслати Поділитися на інших сайтах More sharing options... roman21 Опубліковано: 8 квітня 2021 Share Опубліковано: 8 квітня 2021 подскажите не планируется ли адаптация под oc1.5.6.4 ? Надіслати Поділитися на інших сайтах More sharing options... seregin Опубліковано: 8 квітня 2021 Автор Share Опубліковано: 8 квітня 2021 5 часов назад, roman21 сказал: подскажите не планируется ли адаптация под oc1.5.6.4 ? Под 1.5 не будет. Надіслати Поділитися на інших сайтах More sharing options... 2 months later... Yureka Опубліковано: 22 червня 2021 Share Опубліковано: 22 червня 2021 Добрый день. Переменные для оповещений об изменении статуса товаров (например {product_url} ) могут быть в виде ссылок, чтобы получатель уведомления из письма мог сразу на ссылку нажать и перейти к товару на сайте? Или у меня что-то не правильно установилось? Ссылки просто в виде текста в письме. Надіслати Поділитися на інших сайтах More sharing options... seregin Опубліковано: 22 червня 2021 Автор Share Опубліковано: 22 червня 2021 3 часа назад, Yureka сказал: Добрый день. Переменные для оповещений об изменении статуса товаров (например {product_url} ) могут быть в виде ссылок, чтобы получатель уведомления из письма мог сразу на ссылку нажать и перейти к товару на сайте? Или у меня что-то не правильно установилось? Ссылки просто в виде текста в письме. Письмо в html, если нужны ссылки, то надо добавляйте <a href="{product_url}">{product_name}</a> 1 Надіслати Поділитися на інших сайтах More sharing options... 2 months later... niger Опубліковано: 25 серпня 2021 Share Опубліковано: 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 добавил инструкцию Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 Вперед Сторінка 4 з 4 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 5 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Модулі та розширення Листи, пошта, розсилки, sms Модуль Opencart: Уведомление о поступлении товара [Поддержка] Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich
wgadget Опубліковано: 22 лютого 2021 Share Опубліковано: 22 лютого 2021 В 28.01.2021 в 20:49, globaltrading сказал: Здравствуйте. Что было в последнем обновлении от 27.01.2021 ? @seregin Подскажите по истории обновления, что было добавлено в какую версию. Не нашли у вас этой информации. Надіслати Поділитися на інших сайтах More sharing options...
seregin Опубліковано: 22 лютого 2021 Автор Share Опубліковано: 22 лютого 2021 2 часа назад, wgadget сказал: @seregin Подскажите по истории обновления, что было добавлено в какую версию. Не нашли у вас этой информации. Смотрите в файле CHANGELOG.txt 1 Надіслати Поділитися на інших сайтах More sharing options... 1 month later... roman21 Опубліковано: 8 квітня 2021 Share Опубліковано: 8 квітня 2021 Спасибо, версия opencart.pro 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 мин Надіслати Поділитися на інших сайтах More sharing options... roman21 Опубліковано: 8 квітня 2021 Share Опубліковано: 8 квітня 2021 подскажите не планируется ли адаптация под oc1.5.6.4 ? Надіслати Поділитися на інших сайтах More sharing options... seregin Опубліковано: 8 квітня 2021 Автор Share Опубліковано: 8 квітня 2021 5 часов назад, roman21 сказал: подскажите не планируется ли адаптация под oc1.5.6.4 ? Под 1.5 не будет. Надіслати Поділитися на інших сайтах More sharing options... 2 months later... Yureka Опубліковано: 22 червня 2021 Share Опубліковано: 22 червня 2021 Добрый день. Переменные для оповещений об изменении статуса товаров (например {product_url} ) могут быть в виде ссылок, чтобы получатель уведомления из письма мог сразу на ссылку нажать и перейти к товару на сайте? Или у меня что-то не правильно установилось? Ссылки просто в виде текста в письме. Надіслати Поділитися на інших сайтах More sharing options... seregin Опубліковано: 22 червня 2021 Автор Share Опубліковано: 22 червня 2021 3 часа назад, Yureka сказал: Добрый день. Переменные для оповещений об изменении статуса товаров (например {product_url} ) могут быть в виде ссылок, чтобы получатель уведомления из письма мог сразу на ссылку нажать и перейти к товару на сайте? Или у меня что-то не правильно установилось? Ссылки просто в виде текста в письме. Письмо в html, если нужны ссылки, то надо добавляйте <a href="{product_url}">{product_name}</a> 1 Надіслати Поділитися на інших сайтах More sharing options... 2 months later... niger Опубліковано: 25 серпня 2021 Share Опубліковано: 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 добавил инструкцию Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 Вперед Сторінка 4 з 4 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 5 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Модулі та розширення Листи, пошта, розсилки, sms Модуль Opencart: Уведомление о поступлении товара [Поддержка]
roman21 Опубліковано: 8 квітня 2021 Share Опубліковано: 8 квітня 2021 Спасибо, версия opencart.pro 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 мин Надіслати Поділитися на інших сайтах More sharing options...
roman21 Опубліковано: 8 квітня 2021 Share Опубліковано: 8 квітня 2021 подскажите не планируется ли адаптация под oc1.5.6.4 ? Надіслати Поділитися на інших сайтах More sharing options...
seregin Опубліковано: 8 квітня 2021 Автор Share Опубліковано: 8 квітня 2021 5 часов назад, roman21 сказал: подскажите не планируется ли адаптация под oc1.5.6.4 ? Под 1.5 не будет. Надіслати Поділитися на інших сайтах More sharing options... 2 months later... Yureka Опубліковано: 22 червня 2021 Share Опубліковано: 22 червня 2021 Добрый день. Переменные для оповещений об изменении статуса товаров (например {product_url} ) могут быть в виде ссылок, чтобы получатель уведомления из письма мог сразу на ссылку нажать и перейти к товару на сайте? Или у меня что-то не правильно установилось? Ссылки просто в виде текста в письме. Надіслати Поділитися на інших сайтах More sharing options... seregin Опубліковано: 22 червня 2021 Автор Share Опубліковано: 22 червня 2021 3 часа назад, Yureka сказал: Добрый день. Переменные для оповещений об изменении статуса товаров (например {product_url} ) могут быть в виде ссылок, чтобы получатель уведомления из письма мог сразу на ссылку нажать и перейти к товару на сайте? Или у меня что-то не правильно установилось? Ссылки просто в виде текста в письме. Письмо в html, если нужны ссылки, то надо добавляйте <a href="{product_url}">{product_name}</a> 1 Надіслати Поділитися на інших сайтах More sharing options... 2 months later... niger Опубліковано: 25 серпня 2021 Share Опубліковано: 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 добавил инструкцию Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 Вперед Сторінка 4 з 4 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 5 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
Yureka Опубліковано: 22 червня 2021 Share Опубліковано: 22 червня 2021 Добрый день. Переменные для оповещений об изменении статуса товаров (например {product_url} ) могут быть в виде ссылок, чтобы получатель уведомления из письма мог сразу на ссылку нажать и перейти к товару на сайте? Или у меня что-то не правильно установилось? Ссылки просто в виде текста в письме. Надіслати Поділитися на інших сайтах More sharing options...
seregin Опубліковано: 22 червня 2021 Автор Share Опубліковано: 22 червня 2021 3 часа назад, Yureka сказал: Добрый день. Переменные для оповещений об изменении статуса товаров (например {product_url} ) могут быть в виде ссылок, чтобы получатель уведомления из письма мог сразу на ссылку нажать и перейти к товару на сайте? Или у меня что-то не правильно установилось? Ссылки просто в виде текста в письме. Письмо в html, если нужны ссылки, то надо добавляйте <a href="{product_url}">{product_name}</a> 1 Надіслати Поділитися на інших сайтах More sharing options... 2 months later... niger Опубліковано: 25 серпня 2021 Share Опубліковано: 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 добавил инструкцию Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 Вперед Сторінка 4 з 4 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 5
niger Опубліковано: 25 серпня 2021 Share Опубліковано: 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 добавил инструкцию Надіслати Поділитися на інших сайтах More sharing options...
Recommended Posts