Навязчивое голосование с использованием аякса. Часто посетители игнорируют ваш опрос или он запрятан где-то в глубине страницы, что на него никто не обращает внимания. Небольшие изменения в стандартной панели исправят эту ситуацию.

Принцип работы следующий. Зарегистрированный пользователь заходит на ваш сайт, допустим со момента последнего посещения там появился новый опрос, в котором он еще не принимал участие. Упростим ему задачу - выведем запрос в центре экрана, пусть даст быстрый ответ и закроет его. Кому-то это покажется слишком навязчивой мерой, но ведь после ответа мы больше не пристаем;)

Итак к коду. Нам потребуется библиотека jQuery и плагин FancyBox.

На подключении плагина FancyBox останавливаться долго не буду, загружаем куда нам удобно, подключаем javascript и css. В php-fusion 7.01 это будет выглядеть следующим образом:

 

add_to_head('<script type="text/javascript" src="/images/fancybox/jquery.fancybox-1.3.1.js"></script>');
add_to_head('<link rel="stylesheet" type="text/css" href="/images/fancybox/jquery.fancybox-1.3.1.css" media="screen" />');

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

 

Далее нам нужно немного доработать саму панель, находим строчку:

 if (iMEMBER && !dbrows($result2) && $data['poll_ended'] == 0) {

добавляем сразу после нее:

add_to_head('<script type="text/javascript">$(function() }{ $("#ajax_poll_btn").fancybox(}{"titlePosition":"inside","width":"400px","height":"400px", "autoScale": false}).click(); });</script>');
echo "<a id='ajax_poll_btn' href='#ajax_poll' title='".$locale['global_130']."'></a>n";
echo "<div id='ajax_poll'>n";

Немного ниже, находим строчку:

  echo "</div>n</form>n";

добавляем ниже:

  echo "</div>n";

Выглядеть это будет вот так:

php-fusion опрос на ajax

Для ленивых, прилагаю готовую панельку, вместе с подключенным fancybox. Нужно всего-лишь загрузить к себе на сайт и заменить файл панели опроса файлом из архива: infusions/member_poll_panel/member_poll_panel.php.

Скачать навязчивый опрос на ajax: ajax_poll_7.01.zip

На момент написания был использован jquery 1.4.2 из сборки php-fusion 7.01 и fancybox 1.3.1 с стандартным оформлением.