Плагин «Социальные комментарии» (обновление 10.09.2014)
Описание
Позволяет посетителям оставлять комментарии, используя аккаунты социальных сетей, и гостевые комментарии без регистрации.
Поддерживается авторизация из социальных сетей Вконтакте, Facebook и Mail.ru (для корректной работы необходимо получение идентификаторов для сайта).
Основан на плагинах:
1) "OpenComments" (автор: flexbyte, модификации: iMind);
2) "Social Comments" (автор: 4ever4you)
Работоспособность проверена:
— на шаблонах «Synio» и «Developer»;
— с плагинами «EditComment», «Starrating», «Цитирование комментариев»;
— плагин «Reposter» требует небольшой модификации.
Тестовый сайт: ls.wasja.info/
GitHub: github.com/wasja1982/livestreet_newsocialcomments
Внешний вид

Разрешена авторизация из Вконтакте, Facebook, Mail.ru

Разрешена авторизация из Вконтакте, Facebook, Mail.ru и гостевые комментарии (крупные иконки авторизации)

Авторизованный пользователь

Отображение иконки соцсети
Настройка
Настройка плагина осуществляется редактированием файла "/plugins/newsocialcomments/config/config.php".
Поддерживаемые директивы:
1) $config['enabled'] — Позволяет отключать добавление гостевых комментариев без деактивации плагина. При отключенном плагине вместо имени гостя будет отображаться guest. По умолчанию включено (true).
2) $config['ask_mail'] — Запрашивать e-mail для гостевых комментариев. По умолчанию включено (true).
3) $config['use_mail_check'] — Проверять существование сервера почты для e-mail гостя (требует PHP 5.3.0 и выше при работе сервера под Windows). По умолчанию включено (true).
4) $config['use_fb_api'] — Разрешить авторизацию через Facebook. По умолчанию разрешено (true).
5) $config['fb_id'] — Идентификатор приложения для Facebook. Уникальный идентификатор для своего сайта необходимо получить по ссылке developers.facebook.com/apps/?action=create
6) $config['fb_secret'] — Секретный ключ приложения для Facebook. Получается одновременно с идентификатором приложения.
7) $config['use_vk_api'] — Разрешить авторизацию через Вконтакте. По умолчанию разрешено (true).
8) $config['vk_id'] — Идентификатор приложения для Вконтакте. Уникальный идентификатор для своего сайта необходимо получить по ссылке vk.com/editapp?act=create
9) $config['vk_secret'] — Секретный ключ приложения для Вконтакте. Получается одновременно с идентификатором приложения.
10) $config['use_mr_api'] — Разрешить авторизацию через Mail.ru. По умолчанию разрешено (true).
11) $config['mr_id'] — Идентификатор приложения для Mail.ru. Уникальный идентификатор для своего сайта необходимо получить по ссылке api.mail.ru/sites/my/add/
12) $config['mr_private'] — Приватный ключ приложения для Mail.ru. Получается одновременно с идентификатором приложения.
13) $config['mr_secret'] — Секретный ключ приложения для Mail.ru. Получается одновременно с идентификатором приложения.
14) $config['use_server_check'] — Дополнительная защита от подмены данных на клиенте — запрашиваются информация о пользователе напрямую в соцсети. Замедляет скорость добавления комментариев из-за выполнения запросов к серверам социальных сетей. По умолчанию включена (true).
15) $config['use_auto_login'] — Автоматическая проверка авторизации при загрузке страницы. По умолчанию включена (true).
16) $config['show_icon'] — Загружать JS-скрипт, отображающий иконки соцсетей возле имени автора комментария.
Вместо данного скрипта рекомендуется использовать изменение шаблона. По умолчанию разрешено (true).
17) $config['use_small_icon'] — Размер иконок для логина — 16px (true) или 24px (false). По умолчанию 16px (true).
18) $config['use_parser'] — Использовать стандартный парсер для обработки комментариев (разрешает вставлять видео и т.п.). Потенциально может снизить безопасность сайта. По умолчанию отключено (false).
19) $config['add_field'] — Добавлять в форму дополнительное поле для борьбы со спамом. По умолчанию разрешено (true).
20) $config['field_name'] — Название дополнительного поля для борьбы со спамом.
Установка
1. Скопировать плагин в каталог /plugins/
2. Через панель управления плагинами (/admin/plugins/) запустить его активацию.
3. Активация будет успешной если пользователя с ID = 0 не существует в базе (см. prefix_user).
В противном случае, надо выполнить вручную след. SQL запрос:
ALTER TABLE `prefix_comment` ADD `guest_name` VARCHAR( 150 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL , ADD `guest_email` VARCHAR( 150 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, ADD `guest_extra` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL
Известные проблемы
1. Если при добавлении комментариев с авторизацией через социальную сеть плагин возвращает ошибку «Ошибка авторизации в социальной сети», а с добавлением гостевых комментариев проблем нет, то вероятно на хостинге установлено ограничение «allow_url_fopen» для PHP в false. В результате функция «file_get_contents» не может считать информацию с сервера соцсети.
Решение:
- Разрешить «allow_url_fopen».
- Отключить дополнительную защиту от подмены данных на клиенте — установить параметр $config['use_server_check'] равным false.
Fatal error: Call to a member function getUserId() on a non-object in /var/sites/site.ru/plugins/reposter/classes/hooks/HooksReposter.class.php on line 109
Это вызвано попыткой обратиться к несуществующему пользователю.
Решение: добавить в файле "/plugins/reposter/classes/hooks/HooksReposter.class.php" после строки
public function ExportComments( $aVars){
следующий код
/////////////////////////////////////////////////////////////////////////////// // Для совместимости с New Social Comments /////////////////////////////////////////////////////////////////////////////// if (!$this->User_IsAuthorization()) { return; } ///////////////////////////////////////////////////////////////////////////////
3. Окно авторизации в соцсети не открывается или открывается и сразу закрывается. Такая проблема может наблюдаться при использовании блокировщиков рекламы.
Решение: просить разработчиков блокировщиков исправить некорректные правила для блокировки.
Изменения
1.0.7 (09.09.2014)— Добавлена поддержка возможности замены капчи с помощью хуков:
блочный хук «template_block_newsocialcomments_captcha» — для замены блока вывода капчи;
хук «newsocialcomments_captcha_check» — переопределение проверки капчи (результат возвращается в параметре 'bCaptchaCheck');
блочный хук «template_block_newsocialcomments_captcha_reload» — для замены блока JS-функции обновления капчи.
— Добавлено автоматическое обновление капчи при ответе на комментарий и цитировании комментария.
— Добавлен параметр $config['add_field'] — Добавлять в форму дополнительное поле для борьбы со спамом.
— Добавлен параметр $config['field_name'] — Название дополнительного поля для борьбы со спамом.
— Добавлен параметр $config['use_mail_check'] — Проверять существование сервера почты для e-mail гостя.
1.0.6 (30.04.2014)
— Добавлен параметр $config['use_parser'] — Использовать стандартный парсер для обработки комментариев (разрешает вставлять видео и т.п.).
— Рефакторинг кода JS скрипта.
— Исправлена ошибка с авторизацией в Mail.ru.
— Исправлена ошибка с отображением панели авторизации в шаблоне.
— Добавлена поддержка плагина «Цитирование комментариев».
1.0.5 (08.12.2013)
— Добавлен параметр $config['use_small_icon'] для выбора размера иконок — 16px (true) или 24px (false).
— Добавлена поддержка мобильного шаблона.
— Исправление ошибки с формированием поля «ссылка на профиль».
1.0.4 (24.11.2013)
— Добавлен параметр $config['show_icon'].
— Исправлена ошибка с формированием ссылки на профиль автора у гостевого комментария.
— Исправлено отображение информации об авторах комментариев в «Активности».
— Исправлена ошибка с валидацией e-mail при регистрации пользователей.
1.0.3 (10.11.2013):
— Работа плагина переделана на использование хуков вместо делегации файлов шаблона.
1.0.2 (31.10.2013):
— Добавлена поддержка авторизации Mail.ru.
— Усилена защита от подмены данных на клиенте (запрос информации о пользователе осуществляется серверной частью).
1.0.1 (27.10.2013):
— Исправлены файлы шаблона.
— Исправлены неточности работы JS-скрипта.
— Добавлена защита от подмены данных на клиенте (проверка авторизации в социальной сети).
100 комментариев
1. Он делегирует файлы шаблона с которыми могут работать другие плагины, например старрейтинг нетланка или editcomment
2. Гость, предположим, авторизован и в контакте и в фейсбуке — он откуда будет комментировать?
3. А собственно чем ваш код отличается от кода 4ever4you?
4. Смешно, но после включения этого плагина перестает работать авторизация в модальном окне. Пришлось выключить.
Абсолютно верно, делегирует, как и оригинальный плагин.
Проверка осуществляется последовательно — Вконтакте, фейсбук, гостевые комментарии.
1) Работоспособностью под 1.0.3.
2) Поддержкой гостевых комментариев.
3) Добавлены ссылки на профиль гостя из социальной сети.
4) Добавлена проверка авторизации в серверной части.
Пока все.
На чистом сайте никаких проблем с авторизацией не замечено (шаблон synio). Приведите, если вас не затруднит, список Ваших активных плагинов.
А как можно убрать эти ссылки или закрыть их от индексации? Или пустить через плагин urlredirect?
на
Для этого необходимо править Ваш шаблон — во всех местах где используется ссылка на автора комментария добавить проверку, чтобы идентификатор был равен 0.
1. Неужели надо обязательно делегировать файлы целиком? Хуками не решается?
2. У гостя всегда должна оставаться возможность выбора социальной сети, зачем за него решать откуда он должен комментировать?
Свежая мысль. Т.е. чтобы при загрузке страницы просто отображать иконки выбора?
Почему то был уверен, что лучше автоматическая загрузка любого доступного способа комментирования.
Мне вот тоже нравится идея — когда сайт сам предлагает ответить под учетной записью в ВК если юзер в данный момент авторизирован в нем. Т.е. заходишь — читаешь топик — и видишь внизу уже свой аватар из ВК — остается только набрать коммент и нажать кнопку отправить — прикольно!))
Плагин вызывает интерес…
Можно вопрос — разъясните плиз, после ответа через Ваш плагин с помощью ВК или FB — я так понимаю учетной записи не создается как при использовании плагина ОпенАйдиАвто — так?
Если второй раз человек захочет ответить продолжая общение — плагин запомнит с помощью чего был сделан предыдущий ответ?
Если пользователь не нажмет кнопку «Выйти», то он останется авторизированным в соцсети и при следующем входе на страницу будет автоматически оценен плагином как подключенный.
Единственная проблема на данный момент в том, что если пользователь одновременно авторизован в Вконтакте и Facebook одновременно, то ему будет подгружаться данные Вконтакте.
т.е. для движка он так и остается гостем, но с возможностью написания комментов без регистрации.
А как ведут себя в этом случае различные условия в шаблонах — воспринимают как Гостя и выводят всю инфу как для гостя?
Имхо, не особая проблема… т.к. для РФ — ВК явно популярнее
Стандартные шаблоны вопринимают как пользователь «guest» (кстати, при отключении шаблона именно так комментарии и будут выглядеть), а измененные шаблоны в плагине — выводят более корректную информацию.
а если потом включить обратно плагин — появится иммя из ВК или FB?
Отключен:
Да, все вернется на круги своя.
очень интересно)
С одной стороны мы задачу выполнили — спровоцировали легкое комментирование юзером, читающим топик. Начало положено — он выполнил действие и ввел свой маил (проявив заинтересованность) — можно брать за рога и делать его зарегинным юзером))
Вот тут было бы круто делать его зарегинным юзером после прохождения модерирования его коммента.
Кстати а вообще возможна разовая модерация таких юзер-гостей? Т.е. первый коммент отправлять на модерацию и если прошел — то последующие без модерации?
Но это опять же мало относится к данному плагину.
Тут согласен… комментирование становится сложнее…
Видимо было бы интереснее эти привилегии запрашивать не при первом комментировании, а например при третьем и т.п.
И к тому же скорее всего человек будет стараться заходить под одним типом авторизации… если только случайно под другими данными, т.к. кто-то другой из близких за время его отсутствия отключит его учетку.
В моем плагине единого профиля просто не создается. :)
Теперь порядок проверки — ВКонтакте, Facebook, Mail.ru, гостевые комментарии.
— $config['use_server_check'] — Дополнительная защита от подмены данных на клиенте — запрашиваются информация о пользователе напрямую в соцсети. Замедляет скорость добавления комментариев из-за выполнения запросов к серварам социальных сетей. По умолчанию включена (true).
— $config['use_auto_login'] — Автоматическая проверка авторизации при загрузке страницы. По умолчанию включена (true).
2) Добавлен параметр $config['show_icon'] — загружать скрипт, отображающий иконки соцсетей возле имени автора комментария.
3) Исправлена ошибка с формированием ссылки на профиль автора у гостевого комментария.
4) Исправлено отображение информации об авторах комментариев в «Активности».
5) Работоспособность плагина проверена:
— на шаблонах «Synio» и «Developer»;
— с плагинами «EditComment», «Starrating»;
— плагин «Reposter» требует небольшой модификации.
Если какого-то поля нет, то необходимо добавить отсутствующие:
— поле `guest_name` (у Вас присутствует):
— поле `guest_email`:
— поле `guest_extra`:
Отсутствовало поле
До появления новой версии в каталоге настоятельно рекомендую скачать архив отсюда, распаковать и залить файлы поверх предыдущей версии.
Соответственно вопрос, нельзя ли ввести параметр для отключения только комментариев в вводом емайла (оставив соцсети) или прикрутить графическую капчу с поворотом картинок или ответом на вопрос?
А то пока вынужден был отключить.
И всё-таки половина комментариев была у меня через «гостевые». Вопрос с капчей для меня по-прежнему актуальный.
Спасибо.
engine/lib/external/kcaptcha
Если конкуренты или недоброжелатели желают какать через аккаунт социальной сети — нельзя их забанить, не отключив весь плагин вообще. То есть один недоброжелатель портит все и делает использование плагина невозможным.
В связи с этим вопрос: можно ли сделать доступным бан конкретного пользователя из контакта/fb?
Если нет, есть ли плагины, позволяющие такое?
Как вариант, можно попробовать банить по IP-адресу (вроде бы aceAdminPanel это умела).
А у геста проблема в том, что IP в админке вообще нет. Он же для всех пустой.
Боюсь, что с сервера получить логи будет проблемно…
Если есть FTP-доступ к сайту, то должен быть и доступ к лог-файлам. Например, можно попытаться перенаправить вывод логов в отдельный файл внутри каталога LS. Для этого в корневом файле ".htaccess" необходимо добавить строки:
Путь "/usr/www/site.ru/htdocs/" необходимо заменить на корректный путь к каталогу LS в пределах сервера.
После этого логи будут писаться в файл «logs/php_errors.log».
Но выглядит кривовато…
Боюсь, что мне это не по силам :(
и замените ее на
Альтернативное решение — после авторизации через соцсеть создавать новый аккаунт, но для этого есть специальные плагины, а усложнять этот смысла нет.
— $config['add_field'] — Добавлять в форму дополнительное поле для борьбы со спамом. По умолчанию разрешено (true).
— $config['field_name'] — Название дополнительного поля для борьбы со спамом.
— $config['use_mail_check'] — Проверять существование сервера почты для e-mail гостя (требует PHP 5.3.0 и выше при работе сервера под Windows). По умолчанию включено (true).
Есть вопрос. Будет ли сыпаться спам, допустим, с ВКонтакта, который раньше сыпался через виджет комментариев от ВК? Я так понимаю, что через виджет комменты постят боты. А здесь как, получиться у них такое?
— Добавлен параметр $config['check_unique'] — Проверять совпадение пары «имя — e-mail» для гостевых комментариев (используется при $config['ask_mail'] = true). По умолчанию включено (true).
А возможно ли доработать плагин и добавить в него возможность бана (запрета на комментирование) отдельных пользователей социальных сетей? Насколько я понимаю социальная сетеь передаёт на сторону сайта ID пользователей? Хотелось бы перед публикацией проверять это и если пользователю запрещены комментарии, то выводить соответствующее предупреждение такому пользователю или отправлять на некую страницу где написано о запрете использования сайта.
Дело в том, что в последнее время участились случаи размещения спама при помощи социальных комментариев.