В догонку к предыдущему посту придётся создать и этот, куда я буду складывать вопросы, которые возникают у пользователей при установке CallMe. Естественно, с решениями. Пост будет пополняться по мере нахождения багов и фич.
Не открывается *.html
В браузере не открывается файл с расширением *.html, ошибка 404 или открывается любая из страниц сайта
В файле .htaccess стоит запрет на открытие html-файлов напрямую, такое иногда встречается в некоторых cms. Вы можете проверить, открыв файл .htaccess в корне вашего сайта. Там будет что-то похожее:
- Код: Виділити все
RewriteRule ^(.*).html(.*)$ index.php [L]
Решение: переименуйте html-файл, смените расширение с html на php и в .js найдите функцию, которая вставляет форму на сайт и замените там расширение на .php.
Работает только на стартовой
На стартовой скрипт работает, а на остальных висит отправка и ничего не происходит.
Решение: в html вашего сайта может быть указан параметр base href. Обычно он мало чем вам поможет, а иногда ещё и навредит, как в случае с base href=’http://***.ru/index.php/icons’. Если это не противоречит вашей вёрстке, удаляйте эту строку из темплейтов, в большинстве случаев вообще ничего не поменяется. Если так сделать не получится, отредактируйте js-файлы скрипта и замените все относительные адреса на абсолютные. Например, /callme/callme.js будет заменено на http://***.com/callme/callme.js.
Кнопка не реагирует на клик
Кнопка «Перезвони мне» справа появилась, но не реагирует на клик.
Решение: это может быть по многим причинам. Одна из них: закачаны не все файлы скрипта, либо же закачаны не полностью. Для нормальной загрузки лучше пользоваться не веб-загрузчиками, которые могут фильтровать загружаемый контент, а вручную по ftp. Рекомендую программу WinSCP, CyberDuck или FileZilla.
Для смены электропочты и редактирования скрипта всегда пользуйтесь хорошим редактором кода. Например, Sublime Text, Coda, Notepad++, HTMLPad. Не пользуйтесь стандартным блокнотом (почему?).
Форма отображается внизу страницы
Форма появилась, но не реагирует на клики и висит внизу страницы.
Не загружены или не подключены файлы сss. Убедитесь, что css-файлы лежат в папке /сallme/ либо в любой другой и путь к ним указан верно.
Решение: если у вас OpenCart, поля формы могут быть половинной ширины, так как стили магазина обрабатывают все текстовые поля, в т.ч. CallMe. Решение подсказал userV, нужно в /templates/**/style.css добавить !important перед точкой с запятой для всех стилей текстовых полей.
Не приходят уведомления на почту
Всё работает, но письмо на почту не приходит.
Возможны разные варианты.
Вариант №1: проверьте папку спама. Для того, чтобы почтовик не расценивал письма как спам, укажите разные адреса в качестве отправителя и получателя.
Вариант №2: на хостинге может быть выключена функция php sendmail, в таком случае нужно связаться с хостером и попросить включить.
Вариант №3: проверьте правильность адреса почты.
Вариант №4: иногда адрес отправителя письма должен быть зарегистрированным ящиком на хостинге. Например, здесь, выделено красным.
«Висит» отправка
Появляется слово «Отправка запроса» и ничего не происходит.
Решение: вы неправильно отредактировали send.php и он вместо сообщения об отправке выдаёт error. Чтобы убедиться, откройте файл /callme/lib/send.php в браузере и убедитесь, что он не выдаёт ошибок php.
Вариант №2: вы добавили вывод jQuery вручную после /callme/callme.js. Откройтетестовую страницу по адресу /callme/index.html — если отправка работает, проблема с повторым вызовом jQuery. Если не работает — проблема с send.php.
Вариант №3: у вас устаревшая версия jQuery. Решение: обновите до версии не менее чем 1.7.2 либо воспользуйтесь инструкцией.
Вариант №4: иногда адрес отправителя письма должен быть зарегистрированным ящиком на хостинге. Например, здесь, выделено красным. Если этого сделать нельзя, настройте отправку через SMTP.
Вариант №5: встречается реже, но бывает. В версии 1.9.0 была добавлена функция отображения города, из которого отправляется уведомление. Данные вычисляются по ip и из динамического ответа сервиса freegeoip.net. В том случае, если у вас выключена функция json_decode, ваш файл send.php будет выдавать ошибку 500. В таком случае нужно или попросить хостера включить функцию, или убрать декодирование и отправки данных, нужно найти строки:
- Код: Виділити все
$ip = $_SERVER['REMOTE_ADDR'];
$geo = file_get_contents('http://freegeoip.net/json/'.$ip);
$geo = json_decode($geo, true);
И заменить их на
- Код: Виділити все
$geo = $_SERVER['REMOTE_ADDR'];
Вариант №6. Письмо приходит, но сообщение об отправке не выдается. Причина: устаревшая версия php или запрет на функцию file_get_contents. Воспользуйтесь аддоном Firebug (в Firefox) или встроенной проверкой кода (Chrome). Откройте response для файла send.php и посмотрите, какой ответ присылает этот файл. Там может быть нечто похожее на:
Warning: file_get_contents(): ... is disabled in the server configuration by allow_url_fopen=0...
Тогда в send.php нужно отключить функцию file_get_contents. У вас не будут работать отправка sms и выяснение города, откуда была отправка.
Вариант №7. Неправильно указан отправитель. Обратите внимание: после отправителя по умолчанию (noreply) добавляется домен сайта. Если вы настраиваете smtp, дополнительно домен указываться не должен. Распространенная ошибка встречается в таком формате:
- Код: Виділити все
$from = "[email protected]".$HTTP_HOST;
Вместо этого нужно:
- Код: Виділити все
$from = "[email protected]";
Проблемы с кодировкой
Скрипт работает нормально, а некоторые другие выдают неправильную кодировку
Проблема: сайт в кодировке Win-1251, а скрипт в utf-8. И чтобы не было конфликтов, в callme.js я указал, что ajax-запросы должны отправляться строго в utf-8. Ваше голосование работает тоже с асинхронной передачей данных, соответственно и там кодировка меняется.
Решение: перекодировать (пункт «кодировка» в Notepad++) файлы:
- /callme/js/callme.js
- /callme/f.php
После этого в callme.js закоментировать такую строку:
- Код: Виділити все
contentType: "text/html; charset=utf-8",
Ничего не помогает
Нашёл ошибку, все сделал как указано в инструкции, обновил все файлы, но проблема осталась. Не забывайте чистить кэш. Как браузерный, так и серверный, если ваша CMS это позволяет. Если проблема не решается, напишите сюда подробное описание, дайте ссылку на сайт и опишите, что не получается.