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

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

  1. Спасибо за скрипт и за отличный сайт.

  2. Пишу комментарий, чтобы увидеть как это работает… иначе ведь не проверишь. Идея потрясная! А еще мне понравилось, что под окном записи комментария есть “правила комментирвания” есть такой плагин или это тоже собственное ноу-хау?
    Спасибо!

  3. К сожалению, в данный момент на блоге это не работает из скрипта кэширования. А на счет правил комментирования - это не плагин.

  4. Почему “не работает”? Я вижу “С возвращением, Allpa!”, значит, работает?

  5. Точно, я уже и сам забыл, что делал одну штуку, чтобы запоминалка работала. Так что да, с этим все в порядке. Поэтому забираю обратно свои слова из предыдущего моего коммента =)

  6. Большое спасибо:)

  7. Димокс, ай нид ё хелп :)
    В очередной раз переползаю на новый шаб, на котором не работало сохранение кукисов (если ты помнишь, я тут тебя уже бомбирдировала вопросами на эту тему). Проблема с кукисами была решена подстановкой в файл comments.php строчек →

    1
    2
    3
    4
    5
    6
    <?php
       $commenter = wp_get_current_commenter();
       $comment_author = $commenter['comment_author'];
       $comment_author_email = $commenter['comment_author_email'];
       $comment_author_url = esc_url($commenter['comment_author_url']);
    ?>

    Потом я взялась прикручивать “Привет, автор!”, потому как до решения вопроса с кукисами скрипт не работал, есссно. Всё прикрутилось, но работает странно: любой автор приветствуется как undefined.
    То есть кто бы ни отправлял камент, строчка приветствия всегда одна →

    С возвращением, undefined! Войти под другим именем »

    Я совершенно растерялась.. о.О
    Ты не знаешь, случаем, что это, почему и где подправить, если можно вообще подправить?

    Спасибо!

  8. Димокс, я как всегда — поспешила с вопросом :(
    А потом взяла да и тупо скопировала кусок кода →

    1
    <div id="author-data">... и тут поля для имени, мейла и урла ...</div>

    из оттуда, где он у меня работал, туда, где он у меня не работал :)
    И всё получилось!
    Прошу извинить за панику, мне стыдно.
    Но чисто теоретически.. просто ради интересу: почему же выскакивал undefined, который, как я почитала, выскакивает, когда скрипт не могёт, в данном случае, идентифицировать комментатора.
    Тут, небось, проблема в коде шаблона: скрипт и шаблон просто не поняли друг друга :)

  9. Вот вы уже сами и ответили на свой вопрос.

  10. Хочется проверить, придется комментировать)

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

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

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

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

Подписаться, не комментируя
  • Похожие статьи
  • Предыдущие из рубрики