. Учим InstantCMS отправлять письма - Зухерница - личный сайт диджея Зухера

 

 

Кто онлайн?
Пользователей: 0
Гостей: 17

Учим InstantCMS отправлять письма

10 апреля 2012 - Зухер

Дополнение сделано для версий InstantCMS до 1.9

Не секрет, что когда сайт настроен и работает, в админку мы ползаем редко. Тут вот давеча обновлял движки на своих сайтах и приспичило залезть в админку. И что же я там увидел?
Туева хуча заданных и не отвеченных вопросов в ФАКе сайтов. Беда в том, что о новых вопросах нам сообщает только админка. Давайте научим свой сайт сообщать нам о заданных вопросах.

Для этого нам нужен компонент FAQ, находится он по адресу наш сайт/components/faq - нам нужен файл frontend.php

В самом начале файла frontend.php после объявления функции вводим переменные, у меня это выглядит так :

function faq(){
    /****************************************************************************************/
    $subject= "Появился вопрос на твоём сайте"; //поле тема сообщения
    $label_name="Неформатное Радио";// поле от кого письмо
    $sitemail="site@neformatnoe.ru"; // мыло от имени которого полетит письмо
    $email="mus@neformatnoe.ru"; // адрес куда полетит мессага
    /***************************************************************************************/

Далее находим вот такую часть кода ( у меня это 217 строка)

       //SAVE QUESTION
        $sql = "INSERT INTO cms_faq_quests (category_id, pubdate, published, quest, answer, user_id, answeruser_id, answerdate, hits)
                VALUES ('$category_id', NOW(), '$published', '$message', '', '{$inUser->id}', 0, NOW(), 0)";
        $inDB->query($sql);
       
        $quest_id = $inDB->get_last_id('cms_faq_quests');

И добавляем код отправки письма, у меня это выглядит так:

        //SAVE QUESTION
        $sql = "INSERT INTO cms_faq_quests (category_id, pubdate, published, quest, answer, user_id, answeruser_id, answerdate, hits)
                VALUES ('$category_id', NOW(), '$published', '$message', '', '{$inUser->id}', 0, NOW(), 0)";
        $inDB->query($sql);
       
        $quest_id = $inDB->get_last_id('cms_faq_quests');
        /* ОТПРАВЛЯЕМ ПИСЬМО АДМИНУ */
        $message="Здравствуй!\r\nНа сайте http://$_SERVER[SERVER_NAME] появился вопрос:\r\n$message";
        $message=str_replace("\r\n\r\n","\r\n",$message);
        $message=convert_cyr_string($message,"w","k");
        $subject=convert_cyr_string($subject,"w","k");
        $label_name= convert_cyr_string($label_name,"w","k");
        $point=str_replace("www","",$_SERVER['SERVER_NAME']);
        $headers= "From: $label_name<$sitemail>\r\n";
        mail("$email", $subject, $message,$headers);

Вот впринципе и всё :)

Кому лень ковырять самому ручками как обычно прикладываю архивчик с готовым кодом, Расчехляйте в папку /мой сайт

не забудьте поправить значение переменной $email а то почта полетит ко мне ))))

components.zip| 11,22 Kб| Скачан: 188 раз

По заявкам трудящихся добавляю ещё и письма из Доски объявлений :)

Тут нам потребуется файл /components/board/model.php

находим 460 строчку с таким содержанием $item_id = $this->inDB->get_last_id('cms_board_items');

и после неё втыкаем наш скрипт отправки письма, опять же не забываем про подстановку своих переменных ))))

/****************************************************************************************/
$subject= "Новое объявление на доске"; //поле тема сообщения
$label_name="MYSITE";// поле от кого письмо
$sitemail="site@neformatnoe.ru"; // мыло от имени которого полетит письмо
$email="mus@neformatnoe.ru"; // адрес куда полетит мессага
 /***************************************************************************************/
 /* ОТПРАВЛЯЕМ ПИСЬМО АДМИНУ */
                         $mes=$item['content'];
                         $message="Здравствуй!\r\nНа сайте http://$_SERVER[SERVER_NAME] новое объявление:\r\n$mes";// сообщение
                         $message=str_replace("\r\n\r\n","\r\n",$message);
                         $message=convert_cyr_string($message,"w","k");
                         $subject=convert_cyr_string($subject,"w","k");
                         $label_name= convert_cyr_string($label_name,"w","k");
                         $point=str_replace("www","",$_SERVER['SERVER_NAME']);
                         $headers= "From: $label_name<$sitemail>\r\n";
                         mail("$email", $subject, $message,$headers);

Ну и как обычно архивчик для ленивых :)

не забываем исправить переменную $email

comboard.zip| 7,08 Kб| Скачан: 309 раз

Кошельки

Рейтинг: 0 Голосов: 0 11395 просмотров
Сергей # 30 апреля 2012 в 16:25 +1
Еще бы для статей такое сделать) А то юзеры оставляют статьи и не знают, что им комменты оставляют... Настройки профиля - там только для блогов и фотоальбомов :-(
Nil # 15 мая 2012 в 12:02 +1
Спасибо, полезное дополнение))
Зухер # 18 июля 2012 в 23:54 0
Ребятушки, не забывайте вставлять СВОЙ e-mail в скрипт отправки )))) А то мой ящик заваливает вашими письмами )))
Анатолий # 24 августа 2012 в 05:52 +1
Да спасибо, познавательно!
spbox # 12 сентября 2012 в 01:10 0
Здравствуйте. Подскажите, а что сделать если не отправляются уведомления о личных сообщениях? При этом инвайты идут хорошо, значит сервер почту отправлять может.
Зухер # 12 сентября 2012 в 03:23 0
Тут может быть несколько вариантов.
1. Самый простой ( а вдруг? ) настройки профиля
  

---


2. Второй то же может так случиться - проверяем права и владельца на файлик /includes/letters/newmessage.txt - владельцем должен быть ваш аккаунт на хостинге, права не ниже 666

Если не помогло, то скорее всего ошибка где то в ядре, надо ковыряться смотреть, если честно не озадачивался этим вопросом. Если не помогут первые два пункта, тогда подключим коллективный разум )))
spbox # 12 сентября 2012 в 22:12 0
Большое спасибо за ответ и оперативность! Но к сожалению не помогло. Права на файл изменял и уведомления включены. Также пробовал всячески изменять настройки на вкладке - ставил сначала те что по умолчанию в системе, потом пробовал настроить отправку через smtp используя настройки своего отдельного ящика, не помогло. Заметил что письма с восстановлением пароля тоже приходят. Не идут уведомления только о личных сообщениях и ответах на форуме. Спасибо за выделенное время и буду очень благодарен за подключение коллективного разума)
spbox # 17 сентября 2012 в 00:54 0
Знаю, не для каждого это решение подойдет, но после переустановки системы все заработало. Видимо во время обновления с 1.8 до 1.9 что-то пошло не так.
axeld # 2 декабря 2012 в 09:44 +1
Прочитал статью, обязательно сделаю это на своем сайте, но вопрос у меня в следующем. Как сделать (в каком файле) что бы при регистрации нового пользователя админ уведомлялся по почте.
Зухер # 5 декабря 2012 в 12:03 0
Друзья, в связи с подготовкой к фестивалю, не успеваю всем вовремя ответить и помочь, так что не обессудьте, как только найду время, чем смогу помогу )))
Геннадий # 8 декабря 2013 в 20:12 0
Хаха, клевая задумка и клевый сайт
Ольга # 18 марта 2014 в 18:14 0
Уже не первый раз на вашем сайте! Очень классный сайт! Хоть у вас можно найти информацию касающуюся разработки для InstantCMS. В нете ее ооочень мало.
Ольга # 18 марта 2014 в 18:23 0
Зухер,нужна ваша помощь! Как можно из базы сделать выборку конкретного автора? Например: Заходим на страницу пользователя, в его профиле нажимаем пункт меню "О себе" из таблицы выводятся дынные об этом пользователе(пользователя данного профиля).
Мария # 18 декабря 2014 в 14:34 0
Добрый день! В InstantShop не приходят на почту уведомления о сделанном заказе, ни продавцу, ни клиенту. Подскажите, пожалуйста, в чем может быть причина и как это поправить.
Александр # 10 февраля 2016 в 19:18 0
Привет.Вы решали вопрос по поводу Компонент "Вопросы и ответы" подскажи как добавить дополнительные поля обязательные к заполнению? Нужно добавить поле телефон, Имя и емайл. Спасибо. Версия 1.10.3+
 
 

Сайт Захара Гулина © 2007-2017

 

Rambler's Top100           Яндекс.Метрика