UPD 2013-08-21: обновился архив.

Что такое Callme

В двух словах нужно объяснить: Callme — скрипт формы обратного звонка, который будет работать на любом сайте, независимо от системы управления, на которой он работает. Скрипт использует в работе jQuery, а письма администратору отправляются через php. Уведомление с просьбой звонка отправляется на почту администратору. Дополнительная настройка позволит получать уведомления в виде SMS. На всякий случай убедитесь, что функция php sendmail() на вашем хостинге работает. Впрочем, она работает почти всегда.

Если что-то не получается, читайте отдельный пост, посвящённый настройке скриптов. Прочтите написанное до вас и если ответа не найдёте, пишите вопрос на форуме QBX.ME. Там мы обычно обсуждаем все нововведения и делимся опытом.

Что нового

Сжатый код скрипта теперь весит 3 Кб и грузится моментально. Но это не самое главное: новые поля добавляются на лету и для этого не надо редактировать скрипт. Достаточно указать в настройках, какие именно поля вы хотите видеть в форме.

Настройки указываются в файле /callme/js/config.js. Чтобы изменить поля, которые появляются в форме, укажите их названия в переменной cme_fields через запятую. Если что-то неясно, просто откройте файл с примером и скопируйте код оттуда, скрипт заработает.

Внешний вид формы

Форма заказа звонка выглядит так:

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

Как подключить и настроить

Установка и настройка Callme и настройка SMS-уведомлений.

Что-то не получается?

Для FAQ есть отдельный пост: возможные ошибки при установке Callme, эта запись постоянно обновляется, а свежая редакция указана над текстом.

Условия использования

Пользоваться скриптом можно бесплатно, оставляя мой копирайт. Если хотите появления новых версий этого и других скриптов, а также технической поддержки, поддерживайте и вы меня материально: здесь все реквизиты. Тех, кто помогает больше всего, я указываю на странице благодарностей со ссылками на их проекты (ТИЦ=350, PR=4). Если необходимо стереть копирайт, переводите 7$ (210 рублей, 60 грн) и стирайте. Но лучше оставьте — чем больше пользователей, тем больше будет новых доработок. Спасибо.

Посмотреть и скачать

Посмотреть скрипт в работе:

Коменти

Дмитрий

Не приходят письма на почту(
При открытии файла /callme/lib/send.php выдаёт:
"{"result": "error","cls": "c_error","time": "","message": "Ошибка"}".
Где в этом файле указывается отправитель?
там есть только:

$HTTP_HOST = parse_url ("http://".$_SERVER["HTTP_HOST"]); $HTTP_HOST = str_replace (array ("http://","www."), "", $HTTP_HOST["host"]); $from = "noreply@".$HTTP_HOST; // отправитель. Если настраиваете smtp, не забудьте указать в $from вашу почту."

Назар Токарь

@Дмитрий, смотрите, там же написано: ОТПРАВИТЕЛЬ.

Александра

Назар, куда Вас можно отблагодарить за скрипт?
Потерялась в навигации.

Назар Токарь

@Александра, пожалуйста, здесь все реквизиты: http://dedushka.org/scripts

Александр

Здравствуйте, Назар. Пользуюсь формой, все было отлично. Но на днях нужно было усилить систему защиты сайта через файл .htaccess, установкой RSFirewall, и защитой админки в связи с попыткой взлома сайта и DDoS атак. После этих работ форма обратного звонка перестала работать. Подскажите, как решить проблему.

Назар Токарь

Прекрасный вопрос, очень хороший.

Александр

@Назар Токарь, а есть на него хороший ответ?

Назар Токарь

@Александр, вы ведь шутите, правда?

Александр

@Александр, пишу хороший ответ. Нашел на англоязычном ресурсе. Для тех, кто тоже столкнется с этой проблемой. Оказывается RSFirewall при вставке кода типа “text/javascript” меняет его автоматически на “text/j-avascript”.

Бороться с этим можно тремя способами. Включением своего IP в белый список RSFirewall, либо добавлением в исключения по URL или компоненту, либо настройкой поведения активного сканера RSFirewall (изменением фильтра для POST или GET).

Дарья

Здравствуйте, Назар!
А скажите, пожалуйста, а эта форма будет работать для сайта на Django без php? Нужно будет только настроить отсылку почты через другой мезанизм?

Назар Токарь

Как вы планируете отправлять почту без php?

Дарья

@Назар Токарь, питоном))).

Назар Токарь

Питон разрешен, а php нет? Теоретически можно отправлять через любой серверный скрипт, который имеет rest-интерфейс.

Александр

не получается сделать отправку на 2 адреса, емайлы указываю через запятую в виде – “[email protected],[email protected]
пишет что отправлено, но на почту ничего не приходит

Назар Токарь

@Александр, пробуйте Gmail, SMTP. Одно письмо доходит?

Александр

@Назар Токарь, да, одно уходит, для отправки использую smtp.php

Назар Токарь

@Александр, попробуйте продублировать функцию отправки и отправлять дважды:

MailSmtp ($to, $title, $mess, $headers);
MailSmtp ($to2, $title, $mess, $headers);

Константин

Сайт стоял на простом хостинге nic.ru, обратный звонок работал, перенес на другой хостинг VPS и на почту перестали приходить сообщения, хотя все прописано по старому и ничего не изменялось. С уважением Константин.

Назар Токарь

@Константин, домен меняли? Если вы меняли почту отправителя в send.php, то обновите. Если не меняли, скажите сапорту, чтобы вам включили php sendmail.

Константин

Да домен менял и почту в send.php тоже менял,немного не понял что надо обновить? Вот я написал в тех. поддержку и получил такой ответ:- Мы протестировали работу функции php mail() на вашем сервере. Данная функция работает корректно, без каких либо ошибок.

Назар Токарь

@Константин, ну, смотрите спам. Или настройкте smtp, тут ничем больше не могу помочь удаленно.

Сергей

Пытаюсь подключить скрипт. не работает. в хроме пишет Uncaught TypeError: Object # has no method ‘on’ core.js:33

Назар Токарь

@Сергей, старый jquery

Сергей

@Назар Токарь,

подключаю вроде последнию версию

Назар Токарь

@Сергей, 1.6.4 это не последняя. Минимум 1.7 надо. Я не знаю, наверное уже сто раз написал об этом и все равно… Дичайший фейспалм например.

Artem

Подскажите, почему после установки отображается страница
тестирования call me?? даже после удаления из Хедэра и удаления
папки из корня???

Том

Здравствуйте! Подскажите ,как подключить сразу два Обратных
звонка.На сайте необходимы два подобных виджета ,но с разным
текстом.Пытался переименовать но вызывается всё равно одна и та же
форма.

Назар Токарь

Это отдельная доработка. Такой функционал не предусмотрен.

Иван

Планируется ли возможность получения уведомлений в аську?

Назар Токарь

@Иван, вы можете сами включить у себя веб-сообщения и в качестве почты для уведомлений указать эту почту.

Каир

Добрый день. Пытаюсь поставить ваш скрипт себе на сайт. На локальном сервере все замечательно,а при загрузке на сервер скрипт не срабатывает,просто не появляется кнопка справа и при нажатии на нужную кнопку ничего не происходит,хотя скрипт 100% подключен к странице. Что делать?

Назар Токарь

@Каир, единственное что могу вам посоветовать это почитать инструкцию. Которую вы кажется не открывали.

Каир

@Назар Токарь, я открывал инструкцию и не раз,все сделано в точности как там сказано

Назар Токарь

@Каир, нет, это не так

Кирилл

Добрый день!

Как обстоит дело со спамом через скрипт?
У меня через встроенный скрипт обратного звонка идет немыслимый поток спама(((

Назар Токарь

@Кирилл, спама нет. Только если сообщение отправляется вручную.

Кирилл

@Назар Токарь,
Спасибо! Соориентирую своего программиста на Ваш скрипт!

LEON

Назар, сорри за оффтопик, подскажите, как сделать так чтобы при открытии сайта на широкоформатном мониторе, грубо говоря, само тело сайта было белым, а фон за его пределами серым, ну собственно как у Вас, на этом сайте??

Назар Токарь

@LEON, в css для фона указываете серый фон, а для основного блока белый фон.

LEON

Ок, попробую, спасибо!

LEON

В поле “Мой сайт” ссылка на рыбу сайта. Две кнопки “Закажите обратный звонок” в шапке и в подвале сайта.

Назар Токарь

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

LEON

Добрый день!

На сайте стоит кнопка при нажатии на которую вызывается callme форма.

Но почему-то это работает только после того как обновишь страницу, то есть нажмешь рефреш. То есть если страница просто открылась, то при нажатии на кнопку просто ничего не происходит, а вот если нажать рефреш, то после этого при нажатии на кнопку нормально вызывается форма callme. Причём проверял на нескольких компьютерах, везде одно и то же. Уточню, что открытие происходит броузером ФаерФокс.
Подскажите пожалуйста, как можно устранить эту проблему??

Назар Токарь

@LEON, где ссылка?

LEON

@Назар Токарь, Вы ссылку на сайт получили?

Дмитрий

Здравствуйте! Подскажите, что не так сделал. 1. Если ничего
не ввожу, не выдается сообщение “Заполните все поля” 2. Отправка
висит бесконечно. Хотя письма приходят.

Назар Токарь

Читайте «возможные ошибки». Для кого я посты со списком ошибок пишу?

Makc

Здравствуйте Назар, подскажите если будет время:
Скрипт работает по адресу callmeindex.html и при открытии index.php ошибок нет.
Однозначно подгружается еще где-то JQ.
Никак не могу откопать, уже несколько вариантов пробовал, все не то.
Заранее спасибо! З.Ы. отличный скрипт!

Назар Токарь

@Makc, а вопрос в чем?

Makc

@Назар Токарь, Однозначно подгружается еще где-то JQ.
!Никак не могу откопать где в коде подгружается!, пробовал удалять, все не то.

Назар Токарь

@Makc, да, у вас дважды jq подключается. Это же WP, ручной вызов уберите. Движок сам подключает свежую версию.

Makc

@Назар Токарь, да это fail. Сначала не появлялась форма, сразу добавил вручную. Спасибо!

Назар Токарь

@Makc, и все заработало :). Успехов.

rinatoptimus

Ввожу в форму данные, жму кнопку, но появляется Идет отправка и зависает, письмо не приходит.
http://richplast.ru/
Все сделал по инструкции.

Назар Токарь

@rinatoptimus, дважды вызывается jq и левая кодировка.

Вадим

Спасибо! убрал из настроек php вывод Notice и все работает, чет не догадался до этого…
С нетерпением жду диапазона времени звонка. Еще раз огромное спасибо за труды.

Назар Токарь

Диапазон как раз сейчас делаю. Там же будет подсветка незаполненных полей и более высокая скорость работы.

Вадим

Добрый день. Виснет на Идет отправка… При открытии index.php:

Notice: Undefined index: ctime in /sata1/home/users/avtozvyk/www/www.limozt.com.ua/callme/index.php on line 29 Notice: Undefined index: cs in /sata1/home/users/avtozvyk/www/www.limozt.com.ua/callme/index.php on line 100 {"result": "error","cls": "c_error","time": "","message": "Заполните все поля"}

Понять не могу в чем проблема… Так же у Вас в примере есть диапазон времени звонка. Сейчас Вы это убрали из скрипта? Заранее спасибо за помощь.

Назар Токарь

@Вадим, у вас в настройках php выдаются все предупреждения и ошибки. Поэтому index.php выдаёт ошибку, если открыть его напрямую без передачи массива с данынми. Почитайте про Error reporting.

Вадим

@Назар Токарь, Это ладно… Вопрос в том, почему нет сообщения о том, что запрос ушел на почту. На почту все приходит корректно, но на форме постоянно висити “Идет отправка…”

Назар Токарь

@Вадим, index.php передаёт ответ в json, если кроме этого в ответе будут любые другие символы, строка не будет распознаваться. Ваш php выдаёт замечания, поэтому ответ не читается. А отправка с ответом не связана, она происходит как и должна.

Назар Токарь

@Вадим, диапазон звонка будет в одной из следующих версий, этой функции пока нет.

Антон

Добрый вечер. Хочу в поле телефона для удобства написать +375, а покупатель сам допишет телефон. В каком файле что редактировать? Уже весь код перелопатил, так и не нашел. На форуме говорили про файл core.js, но в версии 1.9 его уже нет.

Дедушка

@Антон, вы можете в f.php строку №49:

echo"<span><input placeholder='".$f[$i]."' class='cme_txt' type='text' maxlength='150'/></span>";

заменить на:
echo"<span><input placeholder='".$f[$i]."' class='cme_txt' type='text' maxlength='150'"
if ($f[$i] == "Телефон") { echo" value='+375' "; }
echo"/></span>";

Антон

@Дедушка, заменил код, в итоге callme вообще перестал отображаться. Notepad++ редактирую. Думаю в коде синтаксическая ошибка.

Дедушка

@Антон, забыл точку с запятой в конце первой строки

Антон

@Дедушка, поправил – callme отображается, но в поле по-прежнему нету цифр.

Андрей

А подскажите, как сделать, чтобы помимо кнопок открывающих форму, внизу сайта стояла еще одна открытая форма?

Илья

Доброго времени суток! Хочу поблагодарить за скрипт!!! :-))
Есть вопрос: на сайт нужно разместить только 2 поля из Вашей формы (телефон, имя) ни названия не всплывания не нужно. Форма должна быть статичная…Где найти код формы? Как это реализовать?
Заранее спасибо.

Дедушка

Здравчтвуйте. На форуме есть топик, как это делается.

Карен

Добрый день! А где нибудь есть несжатый скрипт config.js хочу модифицировать скрипт, и в этом месте поправки нужно внести. Спасибо заранее

Дедушка

Что именно хотите сделать?

Карен

@Дедушка, Я хочу сделать на сайт 2 разные формы, одна “Заказать обратный звонок”, вторая “Обратная связь” формы сами по себе одни и те же. только заголовок и кнопка, должны меняться и в форму звонка хотел бы еще время (не обязательно) в зависимости от класса ссылки куда кликаешь типа callme_viewform и online_viewform. На 1.8 много чего сделал, но думаю в 1.9 проще будет.
Так вот конкретно я не знаю что мне нужно поменять, я делаю методов проб и ошибок т.к. не профи в js. Если можно то исходник. Ссылку оставлю и труды мои отдам бесплатно кому понадобиться)

Дедушка

Я буду через неделю на месте и постараюсь вам сделать инструкцию, на форуме выложу. Пока с телефона мало чем смогу помочь.

Карен

@Дедушка, будет замечательно. Благодарю!

Snake

Добрый день! Пользователь name вчера правильно заметил, что если все писать только цифрами, то поля отправляются, а если буквами, то нет. Эта проблема возникает из-за того что при сравнении строк с числми PHP пытается преобразовать строку в число исходя из цифр, которые есть в строке. Например строка “7abc” будет преобразована в число 7, а строка “abc” будет преобразована в 0, потому что в ней нет ничего похожего на число. В файле index.php в функции getOptions() в строке 72 инструкция $value != 0 всегда будет возвращать false, если в строке $value нет цифр, а следовательно такие поля не будут отправлены, поэтому условие if ($value != 0) нужно заменить на if (strlen($value)).

Дедушка

Точно, я сразу подумал, что это может не очень красиво работать. Но оказывается, строка преобразуется.

Спасибо!

Дедушка

@Snake, всё исправил, архив обновился. Спасибо!

Оскар

Приветствую.
Как можно скачать предыдущую версию скрипта? Хочу поставить, пока наблюдаются проблемы с новой.
P.S. скачать я имел ввиду:)

Дедушка

Подождите до завтра.
Старой версии уже нет :)

Дедушка

@Оскар, обновили скрипт, перезакачайте

Петр

Не работает в сборке joomla + vmart причина: vmart использует свой jquery а скрипт свой. Если выключать один, то перестает работать корзина, иначе перестает работать callme-скрипт.

Дедушка

Да, и я именно для этого написал инструкцию на форуме. Чтобы не задавали таких вопросов.

name

Если заполнять все поля цифрами – то приходят все данные, а если буквами – то ничего не приходит. :(

Дедушка

Интересное наблюдение! Сегодня же ночью буду копаться, чтобы выяснить, в чём дело :)

Anyuta Pavlova

Да, заполняли все поля

Влад

Поправьте пожалуйста ссылку в рассылке новостей второй раз приходит, Читать дальше… ведет на ошибку http://dedushka.org/5166.html#more-5166

Скрипт супер! Так держать!

Дедушка

@Влад, спасибо, буду разбираться.

Anyuta Pavlova

Спасибо за скрипт, классная штука=) все работает, только вот в письме, которое на почту приходит, кроме номера телефона никаких контактных данных больше нет… как исправить?

Дедушка

@Anyuta Pavlova, подождите до вечера, я обновлю скрипт и поставьте его заново. Я переделаю некоторые фунукции. Но вообще всё тестировал, работало. Заполняете все поля?

Семен

@Дедушка, тоже обновился до 1.9 – также приходят только заголовки, телефон и подпись.
Имя, сообщение и желаемое время звонка в письмо не попадает.
Посмотрел в коде, сравнил с версией 1.8, переменных $name, $comment, $url и т.п. не нашел. Только $c и $o.

Дедушка

Правильно. Вы удалили предварительно все файлы версии 1.8? Надо снести все и после этого загрузить и поставить заново.

В этих переменных передаются массивы со всеми текстовыми ролями из формы, так и надо.