Окно с сообщением об успешно добавленном комментарии — различия между версиями
Davidov (обсуждение | вклад) |
Mad grant (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
+ | '''Актуально для версии 2.9''' | ||
+ | |||
Если требуется, чтобы после добавление пользователем комментария, он видел сообщение, о том что комментарий добавлен, нужно организовать вывод сообщения по событию comments_message_post_do. | Если требуется, чтобы после добавление пользователем комментария, он видел сообщение, о том что комментарий добавлен, нужно организовать вывод сообщения по событию comments_message_post_do. | ||
Для этого, нужно первым делать перехватить событие. В файле custom_event.php директории ~/classes/modules/comments/ | Для этого, нужно первым делать перехватить событие. В файле custom_event.php директории ~/classes/modules/comments/ |
Текущая версия на 10:08, 5 июня 2013
Актуально для версии 2.9
Если требуется, чтобы после добавление пользователем комментария, он видел сообщение, о том что комментарий добавлен, нужно организовать вывод сообщения по событию comments_message_post_do. Для этого, нужно первым делать перехватить событие. В файле custom_event.php директории ~/classes/modules/comments/ Должен быть следующий код:
<?php
new umiEventListener('comments_message_post_do', 'comments', 'onCommentPost_session');
?>
Где onCommentPost_session - имя кастомного макроса, обрабатывающего событие. Теперь собственно код самого метода, который должен будет создавать для пользователя информацию о том, что комментарий добавлен. Код дожен быть расположен в файле __custom.php той же директории после строки //TODO: Write here your own macroses
public function onCommentPost_session(iUmiEventPoint $event) {
if($event->getMode() == 'after') {
$_SESSION['comment_add']='yes';
}
}
Данный метод, после добавления комментария запишет в переменную $_SESSION['comment_add'] значение, которое можно в дальнейшем использовать для определения того, что комментарий добавлен. Для вывода сообщения, нужно будет проверить значение переменной $_SESSION['comment_add'], и если оно соответствует требуемому, вывести сообщение. Это можно сделать посредством кода:
public function comment_post(){
if(isset($_SESSION['comment_add'])){
if($_SESSION['comment_add']=='yes'){
//Вывод сообщения
echo "<script>alert('Comment was added');</script>";
}
$_SESSION['comment_add']='no';
}
}
}
В данном случае мы использовали javascript, но после строки //Вывод сообщения можно вставить любой код, в зависимости от требований вёрстки. Этот метод, можно вызывать как любой макрос. Если переменная $_SESSION['comment_add'] будет равна "yes", выведется сообщение, в противном случае нет. Ну и последнее что нужно сделать, это добавить запись с методом comment_post в файл permissions.custom.php, для того, чтобы кастом мог работать для всех пользователей:
<?php
$permissions = Array(
'insert' => Array(
'comment_post',
)
);
?>
Так же подобным образом можно организовать уведомления на почту администратора, о том что добавлен комментарий. Для этого в методе, который выполняется по событию comments_message_post_do добавить отправку сообщения. О работе с umiMail, подробно написано в статье UmiMail