Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Модуль Opencart: Уведомление о поступлении товара [Поддержка]


seregin
 Поделиться

Рекомендованные сообщения

  • 2 недели спустя...

В последнее время, примерно раз в неделю, какой-то спамерский бот забивает уведомления, по 50-100 за несколько минут. Валится куча писем. Причем пытается внедрить какой-то код через форму периодически. Защиту от спамеров не планируете прикрутить, хотя бы капчу?

 

Ссылка на комментарий
Поделиться на других сайтах


12 часов назад, markvozniak сказал:

В последнее время, примерно раз в неделю, какой-то спамерский бот забивает уведомления, по 50-100 за несколько минут. Валится куча писем. Причем пытается внедрить какой-то код через форму периодически. Защиту от спамеров не планируете прикрутить, хотя бы капчу?

 

Каптча в модуле стоит с самой первой версии.

Ссылка на комментарий
Поделиться на других сайтах

В 15.12.2020 в 14:47, seregin сказал:

Добрый день.
Это надо дополнительно добавлять функцию в модуль импорта.

 

Небольшое отступление, ставил на сайт шаблон Unishop (наверное в нем есть такой функционал), импорт CSV без правок, при обновлении срабатывало уведомление на почту покупателя.

Ссылка на комментарий
Поделиться на других сайтах


15 часов назад, almir сказал:

 

Небольшое отступление, ставил на сайт шаблон Unishop (наверное в нем есть такой функционал), импорт CSV без правок, при обновлении срабатывало уведомление на почту покупателя.

Сейчас получается не срабатывает?

Ссылка на комментарий
Поделиться на других сайтах

1 час назад, seregin сказал:

Сейчас получается не срабатывает?

Это я к тому что не нужно было править импорт, сейчас нужна такая функция на шаблоне по дефолту.

Ссылка на комментарий
Поделиться на других сайтах


48 минут назад, almir сказал:

Это я к тому что не нужно было править импорт, сейчас нужна такая функция на шаблоне по дефолту.

Ну как я до этого и писал, нужно дорабатывать модуль экспорта csv

Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...
В 28.01.2021 в 20:49, globaltrading сказал:

Здравствуйте.

Что было в последнем обновлении от 27.01.2021 ?

@seregin Подскажите по истории обновления, что было добавлено в какую версию. Не нашли у вас этой информации. 

Ссылка на комментарий
Поделиться на других сайтах


2 часа назад, wgadget сказал:

@seregin Подскажите по истории обновления, что было добавлено в какую версию. Не нашли у вас этой информации. 

Смотрите в файле CHANGELOG.txt

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

  • 1 месяц спустя...

Спасибо, версия 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 мин

Ссылка на комментарий
Поделиться на других сайтах


5 часов назад, roman21 сказал:

подскажите не планируется ли адаптация под oc1.5.6.4 ?

Под 1.5 не будет.

Ссылка на комментарий
Поделиться на других сайтах

  • 2 месяца спустя...

Добрый день. Переменные для оповещений об изменении статуса товаров (например {product_url} ) могут быть в виде ссылок, чтобы получатель уведомления из письма мог сразу на ссылку нажать и перейти к товару на сайте? Или у меня что-то не правильно установилось? Ссылки просто в виде текста в письме. 

Ссылка на комментарий
Поделиться на других сайтах


3 часа назад, Yureka сказал:

Добрый день. Переменные для оповещений об изменении статуса товаров (например {product_url} ) могут быть в виде ссылок, чтобы получатель уведомления из письма мог сразу на ссылку нажать и перейти к товару на сайте? Или у меня что-то не правильно установилось? Ссылки просто в виде текста в письме. 

Письмо в html, если нужны ссылки, то надо добавляйте <a href="{product_url}">{product_name}</a>

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

  • 2 месяца спустя...
В 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 писем

 

Изменено пользователем niger
добавил инструкцию
Ссылка на комментарий
Поделиться на других сайтах


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.