Артём Мáлков

Функция для гостей: «Подписка на новые комментарии» на DLE

5 июн0 комм

Как вы знаете, в DataLife Engine комментировать ваши записи могут не только пользователи сайта, но и гости. Для этого необходимо лишь настроить соответствующие привилегии для групп пользователей в панели управления вашим сайтом.

Но вот не многие знают, что гостям запрещено подписываться на обновления комментариев к материалу.

По какому принципу вообще работает подписка? Вы оставляете комментарий под интересующей новостью и, отметив соответствующий параметр, получаете на свой e-mail (он берется из настроек вашего профиля) уведомление о том, что к этой же новости был добавлен новый комментарий другим участником сайта.

Функция для гостей: «Подписка на новые комментарии» на DLE

Запрет этой функции для гостей логичен, ведь поле «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'  => "Подписаться на комментарии"

и измените «Подписаться на комментарии» на нужное вам значение.

Рекомендуем к просмотру
Скрытие информации от гостей, ликвидация поиска и другие важные изменения в комментариях
Блог
Добавляем виджет для комментариев от «ВКонтакте» на свой сайт
Социальные сети и мессенджеры
Разрешаем гостям добавлять новости на сайте в DLE
Хаки
0
комментариев
Форма комментирования этого поста скрыта. Авторизуйтесь, чтобы расширить привилегии гостевого посещения и получить необходимую помощь от сообщества Pandoge.
Подняться наверх
«Pandoge» - помощник вебмастера