Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как скрыть комментарий под спойлер, в зависимости от включения флажка?

Как скрыть комментарий под спойлер, в зависимости от включения флажка?


     06.05.2020    dle, спойлер, флажок, комментарии    Общие вопросы по PHP, Модули, Хаки, MySQL    1421

вопрос
Здравствуйте. В общем суть вопроса и если есть решения, буду очень благодарен, в форме добавления комментария присутствует checkbox (содержит ли комментарий спойлеры к сериалу) , как сделать, чтобы при нажатии на этот checkbox пользователем, после отправки комментария он скрывался под спойлер. Заранее большое спасибо

Ответа пока нет


35 комментариев

Temiros
Юзер

Temiros - 7 мая 2020 16:30 -

Тоже интересно, как такое замутить

deadluk
Юзер

deadluk - 8 мая 2020 00:10 -

но ведь можно просто попросить комменты кидать под спойлер, тем более, можно кинуть ту часть, что действительно является спойлером, а не личным мнением ТС или подобное.

например

На латыни название моржа – Odobenus rosmarus можно перевести, как «гуляющая с помощью зубов морская лошадь». Когда морж использует свои выдающиеся бивни, чтобы вытащить свое тяжелое тело из воды на льдину, это выглядит так, как будто он «гуляет» с помощью своих бивней, отсюда и название. и дальше текст о классных моржах

soldatimar
Юзер

soldatimar - 8 мая 2020 20:54 -

deadluk, Спасибо, но к сожалению, именно такое нужно, видимо в стол заказов мне дорога.Но все равно спасибо за совет.

deadluk
Юзер

deadluk - 8 мая 2020 21:46 -

если б знал, то скинул ответ)

dj-avtosh
PHP-developer

dj-avtosh - 9 мая 2020 00:03 -

Этот чекбокс стандартным функционалом реализован?

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

soldatimar
Юзер

soldatimar - 9 мая 2020 00:50 -

Блин... Вот, что значит не умение правильно высказывать свои мысли, прошу прощения. Имел ввиду, добавить чекбокс в форму добавления комментариев, по нажатию на который комментарий пусть не обязательно под спойлер уходил, хотя бы класс добавлялся, а там уже оформить можно.

dj-avtosh
PHP-developer

dj-avtosh - 9 мая 2020 01:03 -

Нужно создать поле в phpmyadmin допустим с названием is_spoiler в таблице dle_comments с типом tinyint = 1, по default = 0.

Потом в /engine/modules/addcomments.php найти:

$name = $db->safesql( htmlspecialchars(strip_tags( trim( $_POST['name'] ) ), ENT_QUOTES, $config['charset'] ) );


ниже добавить:

$is_spoiler = ! empty ( $_POST['is_spoiler'] ) && is_scalar( $_POST['is_spoiler'] ) ? 1 : 0;


Найти:

			if( $is_logged ) $db->query( "INSERT INTO " . PREFIX . "_comments (post_id, user_id, date, autor, email, text, ip, is_register, approve, parent) values ('{$post_id}', '{$member_id['user_id']}', '{$time}', '{$name}', '{$mail}', '{$comments}', '{$_IP}', '1', '{$where_approve}', '{$parent}')" );
			else $db->query( "INSERT INTO " . PREFIX . "_comments (post_id, date, autor, email, text, ip, is_register, approve, parent) values ('{$post_id}', '{$time}', '{$name}', '{$mail}', '{$comments}', '{$_IP}', '0', '{$where_approve}', '{$parent}')" );


заменить на:

			if( $is_logged ) $db->query( "INSERT INTO " . PREFIX . "_comments (is_spoiler, post_id, user_id, date, autor, email, text, ip, is_register, approve, parent) values ('{$is_spoiler}', '{$post_id}', '{$member_id['user_id']}', '{$time}', '{$name}', '{$mail}', '{$comments}', '{$_IP}', '1', '{$where_approve}', '{$parent}')" );
			else $db->query( "INSERT INTO " . PREFIX . "_comments (is_spoiler, post_id, date, autor, email, text, ip, is_register, approve, parent) values ('{$is_spoiler}', '{$post_id}', '{$time}', '{$name}', '{$mail}', '{$comments}', '{$_IP}', '0', '{$where_approve}', '{$parent}')" );




Открыть шаблон addcomments.tpl:

Найти:

<button class="btn btn-big" type="submit" name="submit" title="Отправить комментарий"><b>Отправить комментарий</b></button>


Добавить выше

содержит ли комментарий спойлеры к сериалу? <input type="checkbox" name="is_spoiler" value="1" />

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

dj-avtosh
PHP-developer

dj-avtosh - 9 мая 2020 01:16 -

Далее для вывода в шаблон открыть /engine/classes/comments.class.php

найти:

		$tpl->compile( 'comments' );
		
		return $tpl->result['comments'];
		
	}
	
	function build_customcomments( $tpl, $template ) {


Выше добавить:

if ( ! empty ( $row['is_spoiler'] ) )
{

	$tpl->set( '[is_spoiler]', '' );
	$tpl->set( '[/is_spoiler]', '' );

} else {
	
	$tpl->set_block( "'\\[is_spoiler\\](.*?)\\[/is_spoiler\\]'si", "" );

}



-----

Далее открыть файл /engine/modules/functions.php найти:

$sql_select = "SELECT cm.id, post_id, cm.user_id


заменить на

$sql_select = "SELECT cm.is_spoiler, cm.id, post_id, cm.user_id


Продолжение в следующем комментарии...

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

dj-avtosh
PHP-developer

dj-avtosh - 9 мая 2020 01:24 -

1. /engine/modules/lastcomments.php

$comments->query = "SELECT cm.id, 


заменить на

$comments->query = "SELECT cm.is_spoiler, cm.id, 


2. /engine/modules/show.full.php

$comments->query = "SELECT " . PREFIX . "_comments.id, 


заменить на

$comments->query = "SELECT  " . PREFIX . "_comments.is_spoiler, " . PREFIX . "_comments.id, 


3. /engine/modules/search.php

$comms_fields = "SELECT cm.id, 


заменить на

$comms_fields = "SELECT cm.is_spoiler, cm.id, 


4. /engine/ajax/comments.php

$comments->query = "SELECT " . PREFIX . "_comments.id, 


заменить на

$comments->query = "SELECT  " . PREFIX . "_comments.is_spoiler, " . PREFIX . "_comments.id, 


5. ./engine/ajax/addcomments.php

$comments->query = "SELECT " . PREFIX . "_comments.id, 


заменить на

$comments->query = "SELECT  " . PREFIX . "_comments.is_spoiler, " . PREFIX . "_comments.id, 

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

dj-avtosh
PHP-developer

dj-avtosh - 9 мая 2020 01:26 -

Далее в шаблоне с выводом комментарием comments.tpl нужный класс оберунть в

 [is_spoiler]class="spoiler_class"[/is_spoiler] 


По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

dj-avtosh
PHP-developer

dj-avtosh - 9 мая 2020 01:34 -

Что бы работало со всем текстом коммента:

открыть /engine/classes/comments.class.php (то что делали выше в файле comments.class.php оставляем как есть - не трогаем - выше дан верный код)

найти:

		$tpl->compile( 'comments' );
		
		return $tpl->result['comments'];
		
	}
	
	function build_customcomments( $tpl, $template ) {



Выше добавить:

if ( ! empty ( $row['is_spoiler'] ) )
{
       $tpl->set_block( "'\[not_spoiler\](.*?)\[/not_spoiler\]'si", "" );

} else {
	
	$tpl->set( '[not_spoiler]', '' );
	$tpl->set( '[/not_spoiler]', '' );

}


И тогда уже в comments.tpl делаем так:

[not_spoiler]Это мой текст без спойлера: {comment}[/not_spoiler]
 [is_spoiler]Это мой текст со спойлером:  {comment}[/is_spoiler]

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

soldatimar
Юзер

soldatimar - 9 мая 2020 01:47 -

Спасибо Вам большое, очень благодарен. Только подскажите пожалуйста, что я сделал не так... Видимо руки вообще из... создал плагин, все прописал как Вы сказали, но постоянно выводится Это мой текст без спойлера: текст комментария

dj-avtosh
PHP-developer

dj-avtosh - 9 мая 2020 02:03 -

а в таблице dle_comments какое значение у no_spoiler этого комментария?

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

soldatimar
Юзер

soldatimar - 9 мая 2020 02:06 -

Вот на все комментарии, стоит "0" в не зависимости нажимал я на чекбокс или нет(
вот попробовал 1 в значение прописал тогда комментарий скрывается

dj-avtosh
PHP-developer

dj-avtosh - 9 мая 2020 02:20 -

Надо наверно еще и на js внести правку.

engine/classes/js/dle_js.js


"engine/ajax/controller.php?mod=addcomments",{post_id:k


заменить на

"engine/ajax/controller.php?mod=addcomments",{is_spoiler: $("input[name='is_spoiler']:checked"), post_id:k



--------------------


engine/ajax/controller.php?mod=addcomments",{post_id:p


заменить на

engine/ajax/controller.php?mod=addcomments",{is_spoiler: $("input[name='is_spoiler']:checked"), post_id:p



--------------------


"engine/ajax/controller.php?mod=addcomments",{post_id:a.post_id.value


заменить на

"engine/ajax/controller.php?mod=addcomments",{is_spoiler: $("input[name='is_spoiler']:checked"), post_id:a.post_id.value



ОБНОВИТЬ кеш JS!

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

soldatimar
Юзер

soldatimar - 9 мая 2020 02:30 -

Спасибо большое Вам, все заработало. Правда пропала ajax добавление комментария, перезагружается страница просто, но это и к лучшему даже для меня. Еще раз большое спасибо

dj-avtosh
PHP-developer

dj-avtosh - 9 мая 2020 02:48 -

это значит, что вы внесли что-то с ошибкой, напишите мне в телеграм.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

doom45
Юзер

doom45 - 11 мая 2020 21:43 -

Скинул на пиво, спасибо

dj-avtosh
PHP-developer

dj-avtosh - 11 мая 2020 22:59 -

Спасибо. А тот человек, которому я помог выше, даже 1 рубль не задонатил)

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

morepol
Юзер

morepol - 19 июня 2020 02:57 -

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

dj-avtosh
PHP-developer

dj-avtosh - 23 июня 2020 16:39 -

Надо смотреть - я этот код не проверял.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

morepol
Юзер

morepol - 23 июня 2020 17:28 -

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

Uncaught TypeError: Illegal invocation
at e (VM6358 jquery.js:4)
at Gb (VM6358 jquery.js:4)
at Gb (VM6358 jquery.js:4)
at Gb (VM6358 jquery.js:4)
at Gb (VM6358 jquery.js:4)
at Gb (VM6358 jquery.js:4)
at Gb (VM6358 jquery.js:4)
at Function.n.param (VM6358 jquery.js:4)
at Function.ajax (VM6358 jquery.js:4)
at Function.n.<computed> [as post] (VM6358 jquery.js:4)

Отключаю древо в коментах, все отправляется и работает но с оговоркой, при отправке коммента страница перезагружается, а не как ранее на аякс(

dj-avtosh
PHP-developer

dj-avtosh - 23 июня 2020 17:34 -

вы наверно тег {comment} обернули, оберните только необходимую часть.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

morepol
Юзер

morepol - 23 июня 2020 18:43 -

К сожалению нет( выше писали, это :

[not_spoiler]Это мой текст без спойлера: {comment}[/not_spoiler]
[is_spoiler]Это мой текст со спойлером: {comment}[/is_spoiler]

Но я даже не использовал такое, только на класс применил.
Удаление коммента работает на аяксе, то есть все работает, кроме когда нажимаешь ответить в древовидных комментариях появляется вышеуказанная ошибка и добавление не на аяксе

dj-avtosh
PHP-developer

dj-avtosh - 23 июня 2020 18:54 -

а если класс не оборачивать (вообще не трогать шаблон), то работает ответ?

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

morepol
Юзер

morepol - 23 июня 2020 23:16 -

К сожалению нет, не работает. Убираю правки с dle_js.js не отключая хак, все тогда норм работать начинает и древо в комментах и аякс без древа, но не работает сам хак тогда.

dj-avtosh
PHP-developer

dj-avtosh - 23 июня 2020 23:22 -

надо тогда уже лично смотреть

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

morepol
Юзер

morepol - 24 июня 2020 00:05 -

Да бы уже дал бы доступы, чтобы можно было бы глянуть. Новый он на локальном серве, видимо придётся отказаться ибо древо нужно. По началу думал, что где-то допустил ошибку, уже каждую запятую и точку просмотрел результат тот же. Эх жаль.

dj-avtosh
PHP-developer

dj-avtosh - 24 июня 2020 01:00 -

ошибка не похожа на ту, которую может вызвать хак.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

morepol
Юзер

morepol - 24 июня 2020 02:01 -

Сейчас попробовал на чистом движке, тоже самое( Даже просто отключил хак и прописал is_spoiler: $("input[name='is_spoiler']:checked"), в dle_js.js

dj-avtosh
PHP-developer

dj-avtosh - 24 июня 2020 11:57 -

попробуйте делать правки по js не в сжатом js.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

den
Юзер

den - 14 февраля 2023 02:55 -

После
$("input[name='is_spoiler']:checked")
вставить (во всех 3 заменах)
.val()
и не будет перезагружать страницу при добавлении комментария, и отв./ред./удалить все заработает

soldatimar
Юзер

soldatimar - 9 мая 2020 02:12 -


Вот скриншот

doom45
Юзер

doom45 - 11 мая 2020 21:39 -

Если будет возможность оставьте ссылку на скачивание плагина, полезный плагин, спасибо!

P.S: Не забудьте про изменений в engine/classes/js/dle_js.js.

morepol
Юзер

morepol - 23 июня 2020 10:57 -

Ошибка при отправке коммента стоят древовидные , если убрать древо, то ошибки нет, но перестает работать аякс отправка коммента
Uncaught TypeError: Illegal invocation
at e (VM6358 jquery.js:4)
at Gb (VM6358 jquery.js:4)
at Gb (VM6358 jquery.js:4)
at Gb (VM6358 jquery.js:4)
at Gb (VM6358 jquery.js:4)
at Gb (VM6358 jquery.js:4)
at Gb (VM6358 jquery.js:4)
at Function.n.param (VM6358 jquery.js:4)
at Function.ajax (VM6358 jquery.js:4)
at Function.n.<computed> [as post] (VM6358 jquery.js:4)

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх