jQuery-скрипт для WordPress “Привет, комментатор!”

18 февраля 2009 г.

Написал небольшой jQuery-скриптик, который призван несколько повысить удобство комментирования на WordPress-блоге.

Как работает скрипт

Все очень просто. Он проверяет, заполнены ли обязательные поля Имя/E-mail, и выполняет следующее:

  • Если посетитель блога ранее оставлял комментарий, то при следующем комментировании его встречает надпись: “С возвращением, %Имя комментирующего%!”
  • При этом поля Имя/E-mail/URL спрятаны, как ненужные в данный момент элементы, остается только поле для комментария.
  • Комментатор может поменять свои данные, нажав на ссылку “Изменить”.
  • Если у комментатора в браузере отключена поддержка JavaScript, то он увидит полную форму.

Чтобы скрипт выполнялся в принципе, необходимо, во-первых, чтобы у посетителя сайта работали куки в его браузере, во-вторых, чтобы WordPress-блог выводил ранее введенные данные в форме комментирования.

Обязательно убедитесь, что ваш блог выполняет второе условие (выводит ранее введенные данные в форму), иначе никакого смысла в подключении скрипта не будет. Я знаю, что некоторые WordPress-плагины каким-то образом предотвращают появление ранее указанных посетителем данных в коммент-форме. К примеру, так было на моем блоге, когда у меня стоял плагин “Paged Comments”.

Пример

Если вы хотя бы раз оставляли комментарий на моем блоге, то увидите рабочий пример на любой странице, содержащей форму для комментария.

Установка

  1. В файле comments.php найдите код полей <input /> для ввода Имени/E-mail/URL и оберните его в контейнер <div id=”author-data”></div>. Этот блок - то, что будет прятаться, если поля заполнены.
  2. Затем создайте какой-либо файл с расширением .js, например, scripts.js и поместите в него скрипт (либо в ранее существующий js-файл):
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    var $j = jQuery.noConflict();
    $j(document).ready(function() {
      var author_val = $j('#author').val();
      if( author_val !='' && $j('#email').val() !='' ) {
        $j('#author-data').hide();
        $j('#author-data').before('<div id="welcome">С возвращением, <strong>'+author_val+'</strong>! <a href="#">Изменить &raquo;</a></div>')
        $j('#welcome a').toggle(
          function() {
            $j('#author-data').show(300);
            $j(this).html('Свернуть &raquo;');
            return false;
          },
          function() {
            $j('#author-data').hide(300);
            $j(this).html('Изменить &raquo;');
            return false;
          }
        );
      }
    })
  3. Закиньте этот файл в папку с вашей темой.
  4. Теперь подключите скрипт, добавив следующий код в файл header.php перед тегом </head>:
    1
    <script type="text/javascript" src="<?php bloginfo('stylesheet_directory'); ?>/scripts.js"></script>
  5. Если в вашей теме не подключен фреймворк jQuery, то перед строкой из предыдущего пункта добавьте такую:
    1
    <?php wp_enqueue_script('jquery'); ?>
  6. Вот и все.

Теперь, я думаю, вашим посетителям-комментаторам будет приятно, если вы встретите их приветом и спрячете “лишние” поля из формы комментариев =)

Теги: , , , автор: Dimox | рубрика WordPress

Комментарии (53): »

  1. Индерестный скрипт, только помоемому уже большенство известных движков для блогов реализуют данную функцию.)))

  2. А при чем здесь “большенство”? В статье речь только про WordPress.

  3. Вроде сделал всё по инструкции, вот что отображаться стало, как будто проблемы с кодировкой. Что я напортачил?
    � ������������, Ян Такушевич! �������� »

  4. Попробуйте пересохранить comments.php в кодировке utf-8

  5. Файл со скриптом сохраните в кодировке UTF-8.

  6. Спасибо, сохранил файл со скриптом в UTF-8 и всё работает!

  7. Здравая идея.
    Вобще странно почему такой подход не всегда используют. Мне он кажется крайне логичным, лежащим на поверхности. У меня реализация проще, но смысл тот же, просто значения формы заполняются из куков, если они есть.

  8. Вопрос несколько не по теме: у кого-то из блоггеров видел, что когда приходишь на блог из поисковика, вверху страницы отображается специальный блок с сообщением. Не слышали ли вы, случаем, о таком и не знаете ли, каким плагином WP это сделано?
    А то никак вспомнить не могу, где это видел. Сам уже написал себе похожий модуль, но любопытство всё равно мучает.

  9. отлично! буду использовать.
    недавно наваял с jQuery скриптик, реализующий ссылку «ответить на комментарий», добавляющий якорь-ссылку в поле комментария (предпочитаю этот способ древовидному изображению).

  10. Здесь тоже из куков.

  11. Плагин называется Search Unleashed.

  12. Я до выход WP 2.7 тоже такой скрипт использовал =) А древовидные мне больше понравились.

  13. Здесь тоже из куков.

    Это понятно, я имел ввиду, что тут более симпатично это оформлено. )

  14. Может немного не в тему, но связанно с комментариями.
    Подскажи пожалуйста как сделать вывод порядкового номера комментариев.
    Заранее спасибо

  15. Спасибо!! Это вроде то что я искал.

  16. Прикольная весч, вижу стоит у вас на блоге, вскоре и себе такое поставим

  17. ага, мне тоже нравится. Да и вообще, в целом блог очень качественный и интересный.
    Dimox, я добавлю Ваш блог к себе в список друзей и стану вашим постоянным читателем )

    @
  18. Спасибо, очень рад =)

  19. Отличный плагин даже не думал, о таком) обязательно поставлю у себя

    @
  20. У вас небольшая проблемка,. после оставления комментария, получается url следющего вида:
    http://dimox.name/jquery-script-hi-comment-author/comment-page-1/#comment-6624
    и текст поста виден только до тего “more”
    Очень неудобно, а то отписался и хотел еще раз код просмотерть, а поста уже нет

    @
  21. Это не проблемка, а специально так сделано =)

  22. Чтобы больше кликали?) Или для какой цели?
    Уже поставил себе, Все отлично! Спасибо)

    @
  23. Чтобы укоротить страницу. Статьи бывают очень большие.

  24. А как можно сделать так, чтобы для зарегистрированного комментатора не было возможности изменять свои e-mail и адрес сайта? Я в своем втором блоге заметил такую вещь, что как только кто-то регистрируется - буквально в этот же день или на следующий начинают появляться говнокомменты. Регистрируются на один e-mail.ru, а в комменты пишут другой поэтому сопоставить не получается (где-то читал, что WP НЕ фиксирует IP зарегистрированных пользователей). И как таких засранцев поймать никак не пойму.
    Рецепты есть?

    @
  25. Данный вопрос выходит за рамки темы поста. Ответа на него не знаю. Вижу единственный разумный выход - запретить регистрацию на сайте.

  26. Отказывается работать, Дим.
    Блог заполняет вроде все поля, но при подключении скрипта ничего не меняется. Вроде сделал все по мануалу :(

  27. У тебя стоят неправильные двойные кавычки в <div id=”author-data”>. Они должны быть прямые, а не косые. Может быть в этом дело.

  28. Точно. Спасибо, Дим, ожило. Гениально! :)

    PS: Строки я брал копипастом с твоего сайта, т.е. наклонные кавычки взялись из самой статьи.

  29. Отлично. Пожалуйста. Я понял, что ты копипастом =)

  30. здравствуй!
    Что то у мну отказывается работать. Сделал все по мануалу, копипастом. Скобки на прямые исправил, все равно не работает. Не поможешь разобраться?

  31. Не подключен jQuery.

  32. То есть, не подключен, я код вписал, перед строчкой подключения скрипта:

  33. 1
    <?php wp_enqueue_script('jquery'); ?>
  34. Этот код почему-то на твоем блоге не работает, поэтому вместо него попробуй такой:

    1
    <script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script>
  35. О, спасибо, заработало. Осталось с кодировкой разобраться…

  36. Все, вопросы решены)))
    Спс, классная вещь.

  37. Интересно, пойду пробовать :)
    И вообще, замечательные у вас на блоге плагины - уже часа 2 сижу и нарадоваться не могу - выбираю для себя :)

  38. Вот это вещь!
    Спасибо - как раз думал про такую штуку :)

  39. Та же проблема.

    Все по мануалу.

    Кавычки исправил

    В хедер пробовал и тот и другой скрипт вписывать

    ничего не получатся

    поможете?

    @
  40. Где можно посмотреть пример?

  41. У меня почему то тоже не работает((( все варианты перепробовал…помогите, плизззз..
    мой блог http://kino-kazan.ru

    @
  42. Если скрипт находится у вас в файле kino-kazan.ru/wp-content/themes/dynablue/privet.js, тогда причина в том, что этого файла не существует на сайте.

  43. теперь вроде бы там лежит…..
    посмотрите пажалста еще раз что на этот раз не так =)

    @
  44. Хоть файл сейчас и доступен, но что-то с ним все равно не так. Потому что, когда я сохраняю страницу к себе на компьютер (полностью с картинками и скриптами), то файл скрипта сохраняется с расширением .htm, и внутри него оказывается не скрипт, а хтмл-код страницы “404″ с вашего сайта.

  45. понятно что ничего не понятно…
    я просто скопировал js файл изменил его вставил ваш код со страницы и переименовал…..
    понимаю что так наверн не делают…но я вообще в этом не шарю =(
    можете мне выслать готовый файл js ? если вам не сложно =(

    @
  46. Дим, вы не могли бы мне помочь разобраться со всем этим? ооочень нужна ваша помощь или вообще хоть кого-нибудь кто в этом разбирается…у меня вообще много вопросов и боюсь что я со всем этим не справлюсь…. =(
    и блог со временем заглохнет(

    @
  47. Очень понравилась идея скрипта, но дело в том что у меня сейчас не выполняется как раз второе условие, данные в форме не сохраняются. Возможно это как то исправить? Не хочется отключать плагины.

    @
  48. Сначала убедитесь, что в файле comments.php в коде полей формы присутствуют следующие записи:

    1
    2
    3
    <?php echo $comment_author; ?>
    <?php echo $comment_author_email; ?>
    <?php echo $comment_author_url; ?>

    Т.е. должно выглядеть примерно так:

    1
    2
    3
    <input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="22" tabindex="1" />
    <input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="22" tabindex="2" />
    <input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="22" tabindex="3" />

    Если они есть, значит причина в одном из плагинов.

  49. Спасибо! Именно из-за этого и не работало.

    @
  50. Спасибо! Всё получилось, всё работает! Вы замечательный :)

    @

Присоединяйтесь к обсуждению!

Отправляя кoммeнтapий, Вы автоматически принимаете правила кoммeнтиpoвaния на этом блоге.

Правила кoммeнтиpoвaния на блоге dimox.name:

  1. Первый кoммeнтapий всегда проходит премодерацию.
  2. В поле "URL блога" можно указывать только ссылку на главную страницу вашего блога. Ссылки на прочие веб-ресурсы (в том числе блоги/сплоги, созданные не для людей) будут удалены.
  3. Запрещается использовать в качестве имени комментатора слоганы/названия сайтов, рекламные фразы, ключевые и т.п. слова. В случае несоблюдения этого условия имя изменяется по усмотрению владельца блога. Просьба указывать нормальное имя или ник.
  4. Весьма вероятно, что короткий и неинформативный кoммeнтapий вида "Спасибо!", "Интересная статья", будет удален. Исключение составляют знакомые автору блога комментаторы.

Подписаться, не комментируя

Предыдущие из рубрики