Сообщение об отсутствии комментариев на jQuery
Сегодня представлю небольшой скриптик, для того, чтобы сообщать юзерам об отсутствии комментариев к новости, но так как я не сторонник вмешиваться из-за таких мелочей в двиг, сделаем это на jQuery.
В сети есть хаки, которые выводят сообщение "нет комментариев" если их нет, но это ХАКИ! Что будет с ним, когда вы решите обновить DLE до актуальной версии? А если ещё и забыли как ставили...... в общем очередная головная боль.
Всем известно, что в DLE девятой линейки уже встроена библиотека jquery? так почему бы не воспользоваться её возможностями, а не возможностями php?
Итак:
Началось всё с того, что на сайте, в силу специфика вёрстки блок с комментариями, при их отсутствии оставался пустым и выглядело это не очень призентабельно. Поэтому и был найден несложный способ "заполнить" эту пустоту.
Для начала очмечу, что вывод комментариев осуществляется через тег {commеnts} в fullstory.tpl.
Теперь перейдём к разбору кода.
Для начала обернём тег {commеnts} в div с идентификатором fornocomments (вы можете использовать любой id, какой душе угодно) в результате получим вот такую конструкцию:
<div class="comments" id="fornocomments">
{comments}
</div>
{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");
if (comments_block.find("div[id*=comment-id-]").first().text() == "") {comments_block.prepend('<div class="nocomments">Комментариев пока нет</div>');}
});
где:
var comments_block = $("#fornocomments");
это назначение переменной , для дальнейшей "удобности" работы (вдруг мы ещё чтото захотим покодить на jquery для комментариев )
далее условие:
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 (опять же, чтобы скрипт не вызывался в других местах и не тратил "силы" браузера)