Исчезающие плохие комментарии (*Хак))

979
Привет всем !
Очень понравилось как на некоторых сайтах реализовано

постепенное исчезание
заминусованных комментариев

..
Решил сделать такое для нашего Инстанта )



Так как я сторонник скорости на сайте, решил сделать все без использования JS и прочего навесного ..

Исчезание коммента происходит посредством CSS.

В самой обработке исчезания используется простейшая математика,
так, что нагрузки на сайт - никакой!
И ко всему еще запускается она только при условии если у коммента есть минусы ..)

Постарался сделать все максимально кроссбраузерно.
Даже в ИЕ старых версий работает .))

Все файлы в архиве :

frontend.php - пишем поверх своего в \components\comments\
comments.php - ту да же в \components\comments\

com_comments_list.tpl - пишем поверх своего в \templates\ВаШ_ШабЛон\components\
com_comments_list_all.tpl - ту да же в \templates\ВаШ_ШабЛон\components\


Краткое описание :

frontend.php , com_comments_list.tpl и
com_comments_list_all.tpl - это для всех обычных комментов и для странички "Все комментарии"
comments.php - этот нужен если у вас комменты выводятся Аяксом.


После этого нужно зайти в свой styles.css и в любом месте вставить вот это :
Код PHP:
.hide_bad{-moz-transition: all 0.7s;-webkit-transition:opacity 0.7s;-o-transition:opacity 0.7s;transition:opacity 0.7s}
.hide_bad:hover{opacity: 1 !important; filter: alpha(opacity=90) !important; -moz-opacity: 1 !important}

На этом Все!)

* Все файлы - это дефолт версии 1.9 с доработками , если же эти файлы у вас уже менялись или версия другая , то просто нужно сравнением их склеить. )

Брать тУт


Ну и как обычно.. сделайте резервные копии и тд и тп ..

А тут ручное решение ) ::

в файле frontend.php (лежащем в \components\comments\)

нужно найти вот это условие
(Внимание! оно встречается в файле 2 раза! 1-для коментов в материале, 2-для странички всех коментов)
:
Код PHP:
elseif ($comments[$next]['votes']<0){
и сразу в него добавить вот это :
Код PHP:
$hid = 5 - $comments[$next]['votes'];
$hidd = number_format (($hid + $comments[$next]['votes']) / $hid , 1);
$comments[$next]['hidebad'] =  'opacity: '.$hidd.'; filter: alpha(opacity='.(100 * $hidd).'); -moz-opacity: '.$hidd.'';
В коде выше можно играть с цифрой 5 , если ставить больше, то исчезание будет происходить позже..
умножение убрано,(по математике мне -2((
$hidd - это вычисление показателя прозрачности .
ну а дальше просто формируется CSS и суется в массив ..

Далее , если у вас вывод комментов настроен в админке "с помощью аякса"
нужно в файле comments.php (лежащем в \components\comments\)
найти вот это условие : (Встречается 1 раз)
Код PHP:
elseif ($comments[$next]['votes']<0){
и сразу в него добавить вот это :
Код PHP:
$hid = 5 - $comments[$next]['votes'];
$hidd = number_format (($hid + $comments[$next]['votes']) / $hid , 1);
$comments[$next]['hidebad'] =  'opacity: '.$hidd.'; filter: alpha(opacity='.(100 * $hidd).'); -moz-opacity: '.$hidd.'';
Ну а в TPL файлах шаблона это: style="{$comment.hidebad}" class="hide_bad"
и создаст прозрачность нужного элемента при минусовке .
Эти теги можно добавлять к любому нужному элементу в комментах..
Например можно сделать, что бы исчезал только текст (без аватара)
или наоборот весь bad коммент с датой и тп..
сделав вот это: <table class="cmm_entry">
так: <table style="{$comment.hidebad}" class="hide_bad">
(дополнительный стиль можно добавить например вот так:
<table style="padding:5px;color:gray;и тп;{$comment.hidebad}" class="hide_bad">)

И последнее - это добавить стили в свой css (описано чуть выше)

ps. делалось для себя )
так что извиняюсь за некоторые сложности с установкой ..
но зато никаких лишних обработок или еще чего .. v

+ + + + + + + + + + + + + + + + +
Уменьшение запросов в БД (микрохак)) | iMaps, Уведомление об ошибке в ЛС
Комментарии (14)
reload 9 мая 2012 в 09:51 +2
Красиво, просто, +
SJen 9 мая 2012 в 10:13 +1
только, наверно, максимальную прозрачность надо ограничить
чтобы уже совсем не исчезал(я про 99 минусов в примере), а то не очень понятно есть комментарий или просто пустой текст вместо коммента
Def 9 мая 2012 в 10:59 0
SJen, а как скрестить с втвоими комментами? ты же чтото там оптимизировал
KS 9 мая 2012 в 11:20 +1
Точно не помню, но полное исчезание примерно на ~80 минусах .
Цифры для примера брал в основном здесь на сайте .. Больше -50 не находил .. )

хотя если сильно кому нибудь насолить ..))
deburger 22 мая 2012 в 15:31 0
в этом же суть, чтоб плохое не показывать, дабы не смущать пользователей ;)
а, еще можно по ховеру возвращать прозрачность в нормальное значение... убрал мышь — опять невидно... а-ля хабр
SJen 9 мая 2012 в 11:05 +1
KS, напишите если можно суть изменений - что по коду вставлять, там же не много?
не все смогут просто заменить файлик, он может быть не совсем стандартный..


yury если с хаком ускорения - то глянув на код смогу сказать(). Просто аккуратно добавить код для этого исчезания.. конфликтов не будет, это совсем разные вещи.
KS 9 мая 2012 в 11:17 +1
Ок, напишу .
Я просто сделал в виде файлов для облегчения установки )
Подумал мало кто вносил туда глобальные изменения ..
maia 9 мая 2012 в 22:47 +1
Очень интересненько )
SJen 9 мая 2012 в 22:51 0
умножение на -1 это преобразование из отрицательного в положительное число. (проще не смог придумать)
И все-таки можно проще - просто вычесть отрицательное число (минус на минус:) )
то есть так:
Код PHP:
$hid = 5 - $comments[$next]['votes'];
KS 10 мая 2012 в 01:40 0
это я не с того конца потому что придумывал ))
Daze77 11 мая 2012 в 01:37 0
А на сколько сложно реализовать данный хак в плагин?
Daze77 11 мая 2012 в 01:38 0
Нету ли у вас такого желания?
KS 11 мая 2012 в 03:58 0
Я не очень хорошо отношусь к большому кол-ву плагинов в системе ..
Все это может потихоньку повышать нагрузку . Сделать не сложно , но времени сейчас совсем не хватает (
Максим Шорин 11 мая 2012 в 04:22 +5
по-моему лучше плагины в системе чем хаки, легче обновляться. на счет повышения нагрузки , думаю неоправданно, не на столько много она и повышается, если вообще повышается.. joke