Главная JavaScript

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

Написал небольшой jQuery-скриптик, который призван несколько повысить удобство комментирования на WordPress-блоге. Как работает скрипт Все очень просто. Он проверяет, заполнены ли обязательные поля Имя/E-mail, и выполняет следующее: Если посетитель блога ранее оставлял комментарий, то при следующем комментировании его встречает надпись: "С возвращением, %Имя комментирующего%!" При ...

Комментарии (88)

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

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

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

      <?php echo $comment_author; ?>
      <?php echo $comment_author_email; ?>
      <?php echo $comment_author_url; ?>
      

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

      <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" />
      

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

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

  4. Блин, мне нельзя заходить на ваш блог. Столько интересных «примочек», аж глаза разбегаются, так и хочется все поустанавливать… А сайт то грузится от них все дольше… :(
    По поводу скрипта, насколько я понял первая строка отвечает за проверку подключения библиотеки и если все ОК работает дальше. Но проблема в том что тогда придется j пихать и в остальные скрипты, иначе они работать не будут, а если на сайте скажем 20 отдельных скриптов+те что работают в плагинах. Так ли это необходимо?
    Сам скрипт работает отлично (после удаления первой строки и всех букофок j), так что большое вам за него спасибо. =)

  5. Вот и проверю заодно)

  6. Димокс, дорогой!
    Я чуть выше писала, что ты молодец, — так оно и есть, подтверждаю)
    То есть с прежним шаблоном всё работало прекрасно, о чём я тут и сообщила.
    Теперь я перешла на другой шаб, на нём скрипт работать не хочет ни в какую. Перепробовала всё, что ты предлагал другим в комментариях, — не помогает :(
    Может, дело в различных кодах на том и этом шаблоне. На старом input выглядел так →

    <p>
    <input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="22" tabindex="1" <?php if ($req) echo "aria-required='true'"; ?> />
    <label for="author"><small><?php _e('Name <span style="color: red">*</span>','MyProduct') ?>
    <?php if ($req) _e('','MyProduct'); ?>
    </small></label>
    </p>
    ...
    и так далее
    

    На новом же шаблоне каждый input обрамлён дивами по такому принципу →

    <div class="author <?php if ($req) echo "required"; ?>">
    <input type="text" name="author" id="author" value="<?php echo esc_attr($comment_author); ?>" size="22" tabindex="1" <?php if ($req) echo "aria-required='true'"; ?> />
    <label for="author"><?php _e('Имя', 'warp'); ?> <?php if ($req) echo "*"; ?></label>
    </div>
    ...
    Дальше другие дивы: с email и url

    Я заключила в →

    <div id="author-data"></div>

    все три дива: перед самым первым

    <div id="author-data">

    (кавычки правила), после самого последнего

    </div>

    ещё один

    </div>

    .
    Наверное, это неправильно. А как правильно?

    Слушай, мне уже стыдно. я тут у тебя пасусь и забрасываю вопросами. а ты ж занятой человек!
    Прости.

    • То, что поменялся html-код, сути не меняет, причина не в этом. Отладчик указывает на ошибку в этом файле — /wp-content/themes/yoo_vanilla_wp/warp/js/search.js. Возможно, что в этом причина, я в этих ошибка не разбираюсь.

      • Спасибо за информационный ответ, дружище, — я хотя бы поняла, где порыться в поисках проблемы.
        Исследования показали, что код →

        <script type="text/javascript" src="<?php bloginfo('stylesheet_directory'); ?>/scripts.js"></script>

        конфликтует, во-первых, со скриптом для тултипов vtip.js, который подключен выше (при наличии твоего кода тултипы перестают показываться).
        И, во-вторых, при наличии твоего кода перестаёт работать поиск по блогу так, как он задумывался авторами шаблона: при введении слова/фразы в строку поиска выпадает окошко с результатами, где юзеру предлагаются варианты на выбор (ну, как это организовано в любом и-нет поисковике).

        Подумала, бог с ними, с тултипами, другие заюзаю. И с Поиском — ну, заюзаю поиск от Гугла, чёрт с ними, с красивостями. Поудаляла все другие скрипты для чистоты эксперимента, оставила только твой — не работает :(

        Кроме того, я заметила, что шаблон вообще не сохраняет имени/мейла/урла при повторном посещении, как это должно быть на нормальных блогах :)

        Что же делать-то. обидно как!

        Слава богу, без проблем работает другой твой мануал/скрипт: dimox.name/adding-comments-rules/

  7. А что сделать, чтобы WordPress-блог выводил ранее введенные данные в форме комментирования??? Есть ли какие-то решения кроме Disqus Comment System?

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

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

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

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

    <?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! Войти под другим именем «

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

    Спасибо!

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

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

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

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

  14. Спасибо за скрипт и разъяснение!

  15. Сума сойти! У меня сразу заработало ! :) Спасибо, Dimox! За все твои велосипеды с которыми делишься :)))

  16. А у меня не заработал :(Я как раз сейчас украшаю комментарии, попутно описывая это в подробностях, и попробовал подключить скрипт. Но страница вываливается с ошибкой. Правда, у меня гораздо сложнее ввод имени, е-мэйла и сайта, и на сколько я понимаю, мой контейнер описывается следующим кодом (это единственное похожее на

    <input />

    что я нашел в comment-template.php, т.к. в файле темы comments. php даже близко похожего ничего нет):

    	$fields =  array(
    		'author' => '<p class="comment-form-author">' . '<label for="author">' . __( 'Name' ) . '</label> ' . ( $req ? '<span class="required">*</span>' : '' ) .
    		            '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' /></p>',
    		'email'  => '<p class="comment-form-email"><label for="email">' . __( 'Email' ) . '</label> ' . ( $req ? '<span class="required">*</span>' : '' ) .
    		            '<input id="email" name="email" type="text" value="' . esc_attr(  $commenter['comment_author_email'] ) . '" size="30"' . $aria_req . ' /></p>',
    		'url'    => '<p class="comment-form-url"><label for="url">' . __( 'Website' ) . '</label>' .
    		            '<input id="url" name="url" type="text" value="' . esc_attr( $commenter['comment_author_url'] ) . '" size="30" /></p>',
    	);
    

    Пытался задивить, прописывал в header… Не хочет. Обидно. Идея очень неплохая.

  17. Интересная фишка, буду пробовать осуществить у себя на блоге

  18. Здравствуйте!
    Недавно захотела сделать ссылку в тексте, которая бы вела сразу к форме комментирования. Но хотелось бы, чтобы это было плавно. Но к сожалению не получалось. Попробовала убрать Ваш скрипт «С возвращением, автор!», всё заработало, вернула — всё то-же, не работает. С чем это может быть связано и можно ли их как-то «подружить», чтобы работало и то и другое? Скрипт плавного перехода к форме комментирования такой:

    $(document).ready(function() {
        $("a.topLink").click(function() {
            $("html, body").animate({
                scrollTop: $($(this).attr("href")).offset().top + "px"
            }, {
                duration: 500,
                easing: "swing"
            });
            return false;
        });
    });

    Если это не слишком сложно…
    Спасибо!

  19. Великолепно, как раз ищу такие маленькие фишки! Спасибо. Жаль подключение нудное, другие плагины только копируешь и активизируешь, а тут еще делать что-то нужно:)) Но сама идея мне очень понравилась.

Ваш комментарий