» » » Сообщение об отсутствии комментариев на jQuery

Сообщение об отсутствии комментариев на jQuery

11.02
9
13 477
Сообщение об отсутствии комментариев на jQuery


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

В сети есть хаки, которые выводят сообщение "нет комментариев" если их нет, но это ХАКИ! Что будет с ним, когда вы решите обновить DLE до актуальной версии? А если ещё и забыли как ставили...... в общем очередная головная боль.

Всем известно, что в DLE девятой линейки уже встроена библиотека jquery? так почему бы не воспользоваться её возможностями, а не возможностями php?

Итак


Началось всё с того, что на сайте, в силу специфика вёрстки блок с комментариями, при их отсутствии оставался пустым и выглядело это не очень призентабельно. Поэтому и был найден несложный способ "заполнить" эту пустоту.
Кстати: seo курсы ещё никто не отменял.

Для начала очмечу, что вывод комментариев осуществляется через тег {commеnts} в fullstory.tpl.

Теперь перейдем к разбору кода.


Для начала обернём тег {commеnts} в div с идентификатором fornocomments (вы можете использовать любой id, какой душе угодно) в результате получим вот такую конструкцию:
<div class="comments" id="fornocomments">
    {comments}
</div>

Далее "включаем" логическое мышление:
- Если к новости есть хоть один комментарий, то он в любом случаи будет заключён в чтото типа:
<div id="comment-id-100">Комментарий номер 100</div>


- Если же комментариев к новости нет, значит и не будет блока с идентификатором комментария.

Отсюда делаем нехитрый вывод и пишем jquery скрипт:

$(function(){    
var comments_block = $("#fornocomments");
if (comments_block.find("div[id*=comment-id-]").first().text() == "") {comments_block.prepend('<div class="nocomments">Комментариев пока нет</div>');}
});

где:
var comments_block = $("#fornocomments");

это назначение переменной , для дальнейшей "удобности" работы (вдруг мы ещё чтото захотим покодить на jquery для комментариев smile)
далее условие:
if (comments_block.find("div[id*=comment-id-]").first().text() == "") 

т.е. если в блоке с id="fornocomments" не найдётся ни одного блока, содержащего в идентификаторе слова comment-id- и имеющего внутри себя текст, то произойдёт:
comments_block.prepend('<div class="nocomments">Комментариев пока нет</div>');

внутрь блока с id="fornocomments" добавится блок с классом nocomments и текстом Комментариев пока нет

В противном случаи ничего не произойдёт.
Вот собственно и весь скрипт.
Далее помещаем наш скрипт в файл с расширением .js, лучше всего в отдельный, чтобы лишний раз не нагружать браузер пользователя лишним js-кодом, закидываем в папку с шаблоном (обычно это папка /js) и подключаем файл в fullstory.tpl (опять же, чтобы скрипт не вызывался в других местах и не тратил "силы" браузера)

Похожие материалы

Комментарии

amicitia
amicitia 15 февраля 2011 16:46
Не работает скрипт на локалке (((
создал файл abc.js с указанным скриптом, подключил его в fullstory.tpl, завернул {comments} в нужный див, однако див
<div class="nocomments">Комментариев пока нет</div>

не выводится.
ПафНутиЙ
ПафНутиЙ 15 февраля 2011 16:47
библиотека jquery подключена?
amicitia
amicitia 15 февраля 2011 17:31
хм, косяк какой.
тег {headers} же выводит jquery?
только вот посмотрел, на локалке то стоит 9.2, jquery выводятся сразу с jquery ui:
src="/engine/classes/min/index.php?charset=windows-1251&g=general&3"
а в старых версиях dle этот же тег {headers} выводит только jquery:
src="/engine/classes/min/index.php?charset=windows-1251&g=general&1"
если насильно подключить jquery в шаблоне и поместить src выше тега {headers}, то работает, если ниже - то нет.
ПафНутиЙ
ПафНутиЙ 15 февраля 2011 17:35
т.е. включено gzip сжатие js на сайте? Попробуйте отключить - это всёравно малополезная штука, т.к. jquery уже в сжатом виде подключена
.
Цитата: amicitia
если насильно подключить jquery и добавить выше тега {headers}, то всё работает.

Получается проблема с библиотекой на сайте, а не со скриптм. Думаю я вряд ли смогу помочь вам.
amicitia
amicitia 15 февраля 2011 17:43
я уже отредактировал прошлый комментарий :)
в общем, как-то странно...
на dle-news также выводятся хэдерсы...
получается, чтобы на dle 9.2 (мне кажется, это так везде, где 9.2, а не только у меня - здесь же более старая версия dle) работали "Сообщение об отсутствии комментариев на jQuery" и "Предпросмотр комментария (jQuery edition)", нужно насильно подключать библиотеку jquery и обязательно перед тегом {headers}, а не после.
Цитата: ПафНутиЙ
Получается проблема с библиотекой на сайте, а не со скриптм.

вряд ли, библиотека та, что идёт "из коробки" - 1.4.4
самое интересное для меня, если я её же насильно подключаю, всё начинает работать.
ПафНутиЙ
ПафНутиЙ 15 февраля 2011 20:48
wararena.ru - вду 9.2 всё прекрасно работает.
Gopr
Gopr 16 августа 2013 16:26
А можно сделать чтобы этот хак работал в обратную сторону? Есть кнопка-якорь Оставить коммент (она расположена в fullstory.tpl). Нажав на нее происходит прокрутка к форме ввода комментариев. Если в новости нет комментариев то эта кнопка получается не нужна, так как форма ввода видна.
Нужно так: если комментов=0, то кнопки нет. Если комментов>0, то кнопка есть.
Возможно переделать?
ПафНутиЙ
ПафНутиЙ 16 августа 2013 16:54
В новых версиях dle есть теги
[not-comments] и [comments]
Gopr
Gopr 16 августа 2013 17:20
Спасибо, не знал.

Добавить комментарий

Комментировать могут только зарегистрированные пользователи

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.