Doping Опубликовано 8 Октября 2003 Жалоба Поделиться Опубликовано 8 Октября 2003 При обновлении темы на которую подписан юзер, ему приходит письмо (на e-mail) в котором сказано: "Возможно в теме больше одного ответа, но только 1 e-mail будет отправлен Вам после каждого посещения темы, на которую Вы подписаны. Это является пределом на количество писем отправленных Вам." Как сделать так, что бы юзеру приходило письмо после каждого нового поста в тему + в письме текст нового сообщения? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 IBResource Опубликовано 9 Октября 2003 Жалоба Поделиться Опубликовано 9 Октября 2003 в письме текст нового сообщения?Это и так приходит, если у пользователя в профиле указано, что он хочет, чтобы ему вместе с уведомлением приходил и текст сообщения! Как сделать так, что бы юзеру приходило письмо после каждого нового поста в темуПосмотрю вечером, если до меня никто не ответит! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Doping Опубликовано 9 Октября 2003 Автор Жалоба Поделиться Опубликовано 9 Октября 2003 Oska буду весьма признателен. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 IBResource Опубликовано 10 Октября 2003 Жалоба Поделиться Опубликовано 10 Октября 2003 Файл sources/Post.phpтам есть код: // Get the email addy's, topic ids and email_full stuff - oh yeah. // We only return rows that have a member last_activity of greater than the post itself $DB->query("SELECT tr.trid, tr.topic_id, m.name, m.email, m.id, m.email_full, m.language, m.last_activity, t.title, t.forum_id FROM ibf_tracker tr, ibf_topics t,ibf_members m WHERE tr.topic_id='$tid' AND tr.member_id=m.id AND m.id <> '{$ibforums->member['id']}' AND t.tid=tr.topic_id AND m.last_activity > '$last_post'"); убрать оттуда проверку на last_activity. Получится так: // Get the email addy's, topic ids and email_full stuff - oh yeah. // We only return rows that have a member last_activity of greater than the post itself $DB->query("SELECT tr.trid, tr.topic_id, m.name, m.email, m.id, m.email_full, m.language, m.last_activity, t.title, t.forum_id FROM ibf_tracker tr, ibf_topics t,ibf_members m WHERE tr.topic_id='$tid' AND tr.member_id=m.id AND m.id <> '{$ibforums->member['id']}' AND t.tid=tr.topic_id"); Должно помочь. Но результат не гарантирую. Не проверял! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Doping Опубликовано 10 Октября 2003 Автор Жалоба Поделиться Опубликовано 10 Октября 2003 Oska спасибо. проверить сейчас не смогу, у хостера проблемы с отправкой почты с сервера. Как только всё исправят протестирую, и отпишусь. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Doping Опубликовано 13 Октября 2003 Автор Жалоба Поделиться Опубликовано 13 Октября 2003 Oska всё работает. Спасибо. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Doping Опубликовано 13 Октября 2003 Автор Жалоба Поделиться Опубликовано 13 Октября 2003 Есть снова проблемы по этой теме.Я хотел изменить уведомление о новом сообщении, адаптировать его для фильтров почтовых клиентов. Изменил эту строку$SUBJECT['subs_with_post'] = 'Уведомление об ответе в подписанной теме'; на эту$SUBJECT['subs_with_post'] = 'Ответ в тему: <#TITLE#>'; <#TITLE#> взял из тела сообщения, где эта переменная выводит название темы. В полученном письме, в SUBJECT написано: "Ответ в тему: ( From forum.web-obzor.com )" Также в тело письма добывил <#FORUM#> (взял из подписки на форум) В полученном письме эта переменная ни чего не вывела... Вопрос, как заставить в SUBJECT вставлять название темы и как в теле письма вставить название форума от куда эта тема? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 IBResource Опубликовано 14 Октября 2003 Жалоба Поделиться Опубликовано 14 Октября 2003 Опять идем в sources/Post.phpЗначит чтобы понять, как это все работает:Для двух подписок (на тему и на форум) в Post.php есть 2 спец. функции, ты наверно их уже смотрел!Начну со второй задачи.Значит идем в функцию forum_tracker. Там найди код:$this->email->build_message ...Там ты увидишь переменные в том шаблоне (которые такого вида в шаблонах ). Там среди них ты можешь найти строку:'FORUM' => $forum_name,Переменной forum_name и заменяется та запись в шаблонах.Если ее просто перенести в topic_tracker шаблон, то естесственно она там так просто не заработает. Необходимо добавить подобную строку в свой подобный массив с переменными. Но добавив такую строку, можно будет увидеть, что в той функции нет самой переменной forum_name. Значит ее надо создать или передать. можно конечно сделать запрос к базе и по номеру темы понять, к какому форуму эта тема принадлежит, но можно просто функции передать это имя форума при обращении к ней!Надо добавить к запросу topic_tracker (post_reply_post.php & post_q_reply_post.php) переменную имени форума, по аналогии к запросу forum_tracker (post_new_post.php). Сейчас мне надо бежать. Приду вечером договорю + по первому вопросу отвечу! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 IBResource Опубликовано 14 Октября 2003 Жалоба Поделиться Опубликовано 14 Октября 2003 Значит в файлах post_reply_post.php & post_q_reply_post.php находим строку:$class->topic_tracker( $this->topic['tid'], $this->post['post'], $class->forum['last_poster_name'], $this->topic['last_post'] );Добавляем в нее переменную имени форума, так что получается так:$class->topic_tracker( $this->topic['tid'], $this->post['post'], $class->forum['last_poster_name'], $this->topic['last_post'], $class->forum['name'] );Далее в Post.php находим:function topic_tracker($tid="", $post="", $poster="", $last_post="" )добавляем, чтобы принял он нашу новую переменную имени форума:function topic_tracker($tid="", $post="", $poster="", $last_post="", $forum_name="" ) Далее чуть ниже в этой функции добавляем 2 раза (для шаблона с копией сообщения и для шаблона без копии сообщения) ту нашу строчку. Так что вся функция получается такой:function topic_tracker($tid="", $post="", $poster="", $last_post="", $forum_name="" ) { global $ibforums, $DB, $std; require "./sources/lib/emailer.php"; $this->email = new emailer(); //------------------------- if ($tid == "") { return TRUE; } // Get the email addy's, topic ids and email_full stuff - oh yeah. // We only return rows that have a member last_activity of greater than the post itself $DB->query("SELECT tr.trid, tr.topic_id, m.name, m.email, m.id, m.email_full, m.language, m.last_activity, t.title, t.forum_id FROM ibf_tracker tr, ibf_topics t,ibf_members m WHERE tr.topic_id='$tid' AND tr.member_id=m.id AND m.id <> '{$ibforums->member['id']}' AND t.tid=tr.topic_id AND m.last_activity > '$last_post'"); if ( $DB->get_num_rows() ) { $trids = array(); while ( $r = $DB->fetch_row() ) { $r['language'] = $r['language'] ? $r['language'] : 'en'; if ($r['email_full'] == 1) { $this->email->get_template("subs_with_post", $r['language']); $this->email->build_message( array( 'TOPIC_ID' => $r['topic_id'], 'FORUM_ID' => $r['forum_id'], 'TITLE' => $r['title'], 'NAME' => $r['name'], 'POSTER' => $poster, 'POST' => $post, 'FORUM' => $forum_name, ) ); $this->email->subject = $ibforums->lang['tt_subject']; $this->email->to = $r['email']; $this->email->send_mail(); } else { $this->email->get_template("subs_no_post", $r['language']); $this->email->build_message( array( 'TOPIC_ID' => $r['topic_id'], 'FORUM_ID' => $r['forum_id'], 'TITLE' => $r['title'], 'NAME' => $r['name'], 'POSTER' => $poster, 'FORUM' => $forum_name, ) ); $this->email->subject = $ibforums->lang['tt_subject']; $this->email->to = $r['email']; $this->email->send_mail(); } $trids[] = $r['trid']; } } //return TRUE; } Теперь в шаблон добавь <#FORUM#>, и по идее должно работать! Про первый вариант надо прилично там модифицировать и в файле emailer.php, чтобы сделать динамической темы письма. Извини за это не возьмусь. Есть дела по важнее. Я помогаю по мере своих возможностей! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Doping Опубликовано 15 Октября 2003 Автор Жалоба Поделиться Опубликовано 15 Октября 2003 Oska не работает письма приходят, но названия форума в них нет... вместо текста, случайная, комбинация цифр. например: 1066254411 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 IBResource Опубликовано 16 Октября 2003 Жалоба Поделиться Опубликовано 16 Октября 2003 Мыло сомнение. Значит все дело, что такой переменной $class->forum['name'] видимо в этих файлах просто не существует. К сожалению со временем у меня не всё в порядке. Если время появится, то я гляну! Если есть терпение, то жди Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 IBResource Опубликовано 22 Октября 2003 Жалоба Поделиться Опубликовано 22 Октября 2003 Кстати вот есть мод, добавляющий к теме письма название темы. Я его не смотрел, но может ты по этому моду сам сможешь сделать такое же для название форума!http://mods.ibplanet.com/db/?mod=991 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Doping Опубликовано 23 Октября 2003 Автор Жалоба Поделиться Опубликовано 23 Октября 2003 Oska Странный хак, 1. Open sources/Post.php Find and replace the following lines 2 TIMES!!! =============================================== Find: ----- $this->email->subject = $ibforums->lang['tt_subject']; Replace with: ------------- $this->email->subject = str_replace("<#TITLE#>", $r['title'], $ibforums->lang['tt_subject']); ######################################### 2. Open lang/X/lang_post.php ========================================= Find: ----- 'tt_subject' => "Topic Subscription Reply Notification", Replace with: ------------- 'tt_subject' => "Reply Notification From Topic \"<#TITLE#>\"", ######################################### Т.е. переменная <#TITLE#> добавляется в lang_post.php, а сам текст Subject, берется из email_content.php где ни каких изменений не делается... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 urisoft Опубликовано 24 Октября 2003 Жалоба Поделиться Опубликовано 24 Октября 2003 Doping Вопрос, как заставить в SUBJECT вставлять название темы и как в теле письма вставить название форума от куда эта тема?Все так как писал Oska только имя форума передавать не надо. Там же есть запрос в теле Post.php: $DB->query("SELECT tr.trid, tr.topic_id, m.name, m.email, m.id, m.email_full, m.language, m.last_activity, t.title, t.forum_id FROM ibf_tracker tr, ibf_topics t,ibf_members m WHERE tr.topic_id='$tid' AND tr.member_id=m.id AND m.id <> '{$ibforums->member['id']}' AND t.tid=tr.topic_id AND m.last_activity > '$last_post'"); Надо заменить на: $DB->query("SELECT tr.trid, tr.topic_id, m.name, m.email, m.id, m.email_full, m.language, m.last_activity, t.title, t.forum_id, f.name as forum_name FROM ibf_tracker tr, ibf_topics t,ibf_members m LEFT JOIN ibf_forums f ON (f.id = t.forum_id) WHERE tr.topic_id='$tid' AND tr.member_id=m.id AND m.id <> '{$ibforums->member['id']}' AND t.tid=tr.topic_id AND m.last_activity > '$last_post'"); И получишь имя форума из $r['forum_name']Я этот запрос не проверял, но все должно работать... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Вопрос
Doping
При обновлении темы на которую подписан юзер, ему приходит письмо (на e-mail) в котором сказано:
"Возможно в теме больше одного ответа, но только 1 e-mail будет отправлен Вам после каждого посещения
темы, на которую Вы подписаны. Это является пределом на количество писем отправленных Вам."
Как сделать так, что бы юзеру приходило письмо после каждого нового поста в тему + в письме текст нового сообщения?
Ссылка на комментарий
Поделиться на других сайтах
13 ответов на этот вопрос
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.