Расширение шаблона EmailTemplates.russian и PersonalMessage.russian

Автор MrCreatoR, 10 октября 2009, 00:32:26

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

MrCreatoR

Вот решил подправить стандартный шаблон для уведомления о новых ответах в теме, о новых темах в разделе, и о личном сообщении.
Но есть пару моментов...

* Как в шаблоне уведомления о новой теме указать имя раздела этой темы, и желательно ссылку на этот раздел?

* Как можно в шаблоне уведомления о ЛС корректно заменить «\n» на реальные переводы строк? в сообщении приходит нечто подобное:

ЦитироватьТолько что Вы получили личное сообщение от User на Мой форум.\n\nОбратите внимание это всего лишь уведомление. Пожалуйста не отвечайте на этот email.\n\nОтправленное Вам сообщение:\n\n

как временное(?) решения я просто в «PersonalMessage.russian-utf8.php» разбил $txt['pm_email'] на несколько дополнительных переменных, и в «Sources/Subs-Post.php» подставил эти переменные через "\n":

Цитировать$mailmessage str_replace(array('SUBJECT''MESSAGE''SENDER'), array($subject$messageun_htmlspecialchars($from['name'])), $txt['pm_email'] . "\n\n" $txt['pm_email_add1'] . "\n\n" $txt['pm_email_add2'] . "\n\n" $txt['pm_email_add3'] . "\n" $txt['pm_email_add4'] . "\n" $txt['pm_email_add5']);

может как то проще можно?

0daliska

Попробуйте перенос строки <br />. У меня весь html код, прописанный в перeменных txt работает
Уехала отдыхать. Сейчас без интернета до 1 августа. Приеду - выполню все обещания
® For members of Russian community (simplemachines.ru) only

Drakonsa

Цитата: 0daliska от 10 октября 2009, 00:40:42
Попробуйте перенос строки <br />. У меня весь html код, прописанный в перeменных txt работает
Если в письме стоит тип text/plain то к нему дойдут те самые <br>...

0daliska

Drakonsa, Вы абсолютно правы, в случае с отправкой писем не работает...  :-[
Кстати, перенос строки при отправке уведомления с моего форума с \n\n работает без проблем... А вот на тот же почтовый ящик приходят письма с Simple Machines Russian Community и вместо переноса строки пишется \n\n... Вот, к примеру:
Цитировать
Только что Вы получили личное сообщение от ............. на Simple Machines Russian
Community.\n\nОбратите внимание это всего лишь уведомление. Пожалуйста не отвечайте
на этот email.\n\nОтправленное Вам сообщение:\n\nХорошо, попробую. только пока что у
меня что-то с хостингом, форум не открывается, прям кошмар какой-то. 

Ответить на это личное сообщение здесь:
http://www.simplemachines.ru/index.php?action=pm;sa=send;f=inbox;...................
Администрации нашего форума (Simple Machines Russian Community) тоже, значит, предстоит решить эту проблему...
Может, это особенность smf 2?
Уехала отдыхать. Сейчас без интернета до 1 августа. Приеду - выполню все обещания
® For members of Russian community (simplemachines.ru) only

MrCreatoR

0daliska [?]
ЦитироватьМожет, это особенность smf 2?
Скорее всего это "особенность" UTF-8...

P.S
Спасибо за участие, но меня больше интересует первый вопрос, неужели это небыло предусмотрено? wallbash


MrCreatoR

Цитата: digger от 10 октября 2009, 03:27:02
Потому что "\n" должно быть в двойных кавычках, чтобы работало. А в языковых файлах, обычно, все в одинарных.
Точно, в английской версий шаблона так и  сделано, спасибо, будем знать.

А по поводу вопроса с указанием раздела при уведомлении о новой теме не подскажите?

digger®

#7
Цитата: MrCreatoR от 10 октября 2009, 04:10:39

А по поводу вопроса с указанием раздела при уведомлении о новой теме не подскажите?

Примерно так (Если получится, напишите. Я добавлю в FAQ):



В шаблоне используете {BOARDNAME} и {BOARDLINK}.

В Sources/Subs-Post.php находите


	
// Get the subject and body...
	
$result $smcFunc['db_query']('''
	
	
SELECT mf.subject, ml.body, ml.id_member, t.id_last_msg, t.id_topic,
	
	
	
IFNULL(mem.real_name, ml.poster_name) AS poster_name
	
	
FROM {db_prefix}topics AS t
	
	
	
INNER JOIN {db_prefix}messages AS mf ON (mf.id_msg = t.id_first_msg)
	
	
	
INNER JOIN {db_prefix}messages AS ml ON (ml.id_msg = t.id_last_msg)
	
	
	
LEFT JOIN {db_prefix}members AS mem ON (mem.id_member = ml.id_member)
	
	
WHERE t.id_topic IN ({array_int:topic_list})
	
	
LIMIT 1'
,
	
	
array(
	
	
	
'topic_list' => $topics,
	
	
)
	
);


заменяете на


	
// Get the subject and body...
	
$result $smcFunc['db_query']('''
	
	
SELECT mf.subject, ml.body, ml.id_member, t.id_last_msg, t.id_topic, t.id_board, b.name,
	
	
	
IFNULL(mem.real_name, ml.poster_name) AS poster_name
	
	
FROM {db_prefix}topics AS t
	
	
	
INNER JOIN {db_prefix}messages AS mf ON (mf.id_msg = t.id_first_msg)
	
	
	
INNER JOIN {db_prefix}messages AS ml ON (ml.id_msg = t.id_last_msg)
	
	
	
LEFT JOIN {db_prefix}members AS mem ON (mem.id_member = ml.id_member)
	
	
	
LEFT JOIN {db_prefix}boards AS b ON (b.id_board = t.id_board)
	
	
WHERE t.id_topic IN ({array_int:topic_list})
	
	
LIMIT 1'
,
	
	
array(
	
	
	
'topic_list' => $topics,
	
	
)
	
);


находите


	
	
$topicData[$row['id_topic']] = array(
	
	
	
'subject' => $row['subject'],
	
	
	
'body' => $row['body'],
	
	
	
'last_id' => $row['id_last_msg'],
	
	
	
'topic' => $row['id_topic'],
	
	
	
'name' => $user_info['name'],
	
	
	
'exclude' => '',
	
	
);


заменяете на


	
	
$topicData[$row['id_topic']] = array(
	
	
	
'subject' => $row['subject'],
	
	
	
'body' => $row['body'],
	
	
	
'last_id' => $row['id_last_msg'],
	
	
	
'topic' => $row['id_topic'],
	
	
	
'name' => $user_info['name'],
	
	
	
'exclude' => '',
	
	
	
'board_id' => $row['id_board'],
	
	
	
'board_name' => $row['name'],
	
	
);


находите


	
	
$replacements = array(
	
	
	
'TOPICSUBJECT' => $topicData[$row['id_topic']]['subject'],
	
	
	
'POSTERNAME' => un_htmlspecialchars($topicData[$row['id_topic']]['name']),
	
	
	
'TOPICLINK' => $scripturl '?topic=' $row['id_topic'] . '.new;topicseen#new',
	
	
	
'UNSUBSCRIBELINK' => $scripturl '?action=notify;topic=' $row['id_topic'] . '.0',
	
	
);


заменяете на


	
	
$replacements = array(
	
	
	
'TOPICSUBJECT' => $topicData[$row['id_topic']]['subject'],
	
	
	
'POSTERNAME' => un_htmlspecialchars($topicData[$row['id_topic']]['name']),
	
	
	
'TOPICLINK' => $scripturl '?topic=' $row['id_topic'] . '.new;topicseen#new',
	
	
	
'UNSUBSCRIBELINK' => $scripturl '?action=notify;topic=' $row['id_topic'] . '.0',
	
	
	
'BOARDNAME' => $topicData[$row['id_topic']]['board_name'],
	
	
	
'BOARDLINK' => $scripturl '?board=' $topicData[$row['id_topic']]['board_id']. '.0',
	
	
);



MrCreatoR

Цитата: digger от 10 октября 2009, 05:10:20
Примерно так (Если получится, напишите. Я добавлю в FAQ):
Нет, увы не получилось :( Кстати, там же (в искомых блоках) присутствует POSTERNAME, однако оно тоже не парсится в сообщении...

MrCreatoR

Больше нет мыслей на этот счёт? проверял на локальном форуме, и на рабочем, везде новые переменные на парсятся, просто отображается {BOARDNAME} :(