Функция для гостей: «Подписка на новые комментарии» на DLE
Как вы знаете, в DataLife Engine комментировать ваши записи могут не только пользователи сайта, но и гости. Для этого необходимо лишь настроить соответствующие привилегии для групп пользователей в панели управления вашим сайтом.
Но вот не многие знают, что гостям запрещено подписываться на обновления комментариев к материалу.
По какому принципу вообще работает подписка? Вы оставляете комментарий под интересующей новостью и, отметив соответствующий параметр, получаете на свой e-mail (он берется из настроек вашего профиля) уведомление о том, что к этой же новости был добавлен новый комментарий другим участником сайта.
Запрет этой функции для гостей логичен, ведь поле «E-mail» не является обязательной информацией для заполнения гостем. Мы же исправим эту ситуацию и добавим функционал, который решит проблему.
1. Подключаемся к вашему сайту по FTP, открываем файл addcomments.tpl в папке /templates/название вашей темы. Находим там поле, отвечающее за ввод e-mail'а для гостей. На примере стандартной темы это поле:
<input type="text" name="mail" id="mail" class="f_input"/>
Добавляем в него параметр «required»:
<input type="text" name="mail" id="mail" class="f_input" required />
тем самым делаем его обязательным для заполнения.
2. Далее открываем файл show.full.php в папке /engine/modules/, находим:
if ($config['allow_subscribe'] AND $user_group[$member_id['user_group']]['allow_subscribe']) $allow_subscribe = true; else $allow_subscribe = false;
и заменяем на:
if($config["allow_subscribe"] AND $user_group[$member_id["user_group"]]["allow_subscribe"] OR !$is_logged) $allow_subscribe = true; else $allow_subscribe = false;
3. После чего открываем файл addcomments.php в папке /engine/modules/, находим:
if ( $config['mail_comments'] OR $config['allow_subscribe'] ) {
и выше вставляем:
$guest_email = $mail;
4. В этом же файле, ниже, найдите код:
if ($_POST['allow_subscribe'] AND $user_group[$member_id['user_group']]['allow_subscribe'] AND !$found_subscribe) {
// Часть кода опущена
}
и сразу после него вставьте:
if($_POST["allow_subscribe"] AND !$is_logged AND !$found_subscribe) {
if(function_exists("openssl_random_pseudo_bytes")) {
$stronghash = md5(openssl_random_pseudo_bytes(15));
} else {
$stronghash = md5(uniqid(mt_rand(), TRUE));
}
$salt = str_shuffle($stronghash);
$s_hash = "";
for($i = 0; $i < 10; $i ++) {
$s_hash .= $salt{mt_rand(0, 31)};
}
$s_hash = md5($s_hash);
$db->query("INSERT INTO ".PREFIX."_subscribe (user_id, name, email, news_id, hash) values ("0", "$name", "$guest_email", "$post_id", "$s_hash")");
}
На этом наша настройка функции закончена. Если на своем сайте вы используете древовидный тип комментариев (то есть ответ на комментарии происходит в модальном окне), то вы можете добавить функцию подписки в это окно.
Для этого в файле replycomments.php в папке /engine/ajax/ найдите:
if ($config['allow_subscribe'] AND $user_group[$member_id['user_group']]['allow_subscribe']) {
и замените это на:
if($config["allow_subscribe"] AND $user_group[$member_id["user_group"]]["allow_subscribe"] OR !$is_logged) {
Теперь мы окончательно внедрили функцию подписки для гостей.
Если же вы хотите изменить надпись «Подписаться на комментарии», то откройте файл website.lng в папке /language/Russian/, найдите:
'c_subscribe' => "Подписаться на комментарии"
и измените «Подписаться на комментарии» на нужное вам значение.