Модуль «Опросы»

#1. Введение

Опросы (или голосования) – наверное, это один из распространенных элементов любой CMS. Тяжело себе представить современный сайт, на котором бы не было ни одного опроса.
В Seditio была собственная система голосований, но она была весьма неудобной и довольно устаревшей. Вспомните, сколько раз требовалось перезагрузить страницу, чтобы создать опрос с 5-7 вариантами ответов. Или то, что невозможно было создать голосование с множественными вариантами ответов. Или выбор варианта ответа нажатием на ссылку. Или то, что опросы на форуме изначально не существовали, а подключались отдельным плагином.
Забудьте про все это! В Cotonti вас ждет новая система работы с опросами.

Преимущества опросов в Cotonti:
  • Быстрое создание и редактирование опроса
  • Опросы на форуме
  • Опросы с множественным выбором
  • API опросов, что позволяет создавать новые плагины с использованием опросов «на лету»
  • Задействована технология AJAX – теперь после голосования не обновляется вся страница, а только само голосование
  • Полная поддержка шаблонов
  • Метод хранения результатов опроса по ID или IP пользователя
  • Для вывода опросов больше не используются всплывающие окна

#2. Создание нового опроса

Для создания нового опроса заходим
Админ-панель -> Модули –> Опросы
Верхняя часть страницы представляет собой таблицу, в которой находится список всех уже созданных ранее опросов. В данной таблице можно произвести следующие действия: редактировать опрос, удалить, сбросить (обнулить счетчики опроса), переместить наверх (изменить дату создания опроса на текущую), открыть страницу опроса.

Нижняя часть страницы: представляет собой форму создания (редактирования) опроса.
Некоторые комментарии, по поводу работы с данной формой:
Поле «опрос» - заголовок самого опроса,
Поле «дата» отображается только при редактировании уже существующего опроса.
Поле «опции» представляет собой совокупность полей ввода для редактирования и ввода вариантов ответа. Кнопка «х» напротив каждого поля ввода удаляет текущий вариант ответа, если вариантов ответа 2 и менее, то данная просто очистит поле ввода. Снизу под полями ввода находится кнопка «добавить», которая позволяет добавить новый вариант ответа.
«Разрешить множественный выбор» - отметьте, если в созданном опросе может быть сразу несколько вариантов ответа.
«Создать» создает новый опрос

Возможные ошибки при создании опросов:
Заголовок опроса должен быть длинной не менее 4 символов, а также вариантов ответа должно быть 2 и более.

Создание опросов на форуме ничем не принципиально не отличается.
Только предварительно его надо включить. А для этого:
Админ-панель -> Форумы
Выбрать раздел, в котором будет доступно использование опросы (так как по умолчанию данная опция отключена), затем в открывшейся странице включить опцию «Включить опросы». Сохранить изменения. Теперь в данном разделе включены опросы.

#3. Конфигурация опросов

Для настройки опросов войти
Админ-панель -> Модули –> Опросы –> Конфигурация
На странице будет выведен список опций, которые могут быть настроены. Коротко о каждой из опций:
«Включить опросы» - включение или отключения модуля опросов на сайте.
«Способ запоминания голоса» - варианты выбора ID или IP пользователя. В седитио все результаты сравнивались одновременно по ID и по IP пользователя, что было в целом очень хорошо, но имело весомый недостаток. Сегодня очень обширно и стремительно развиваются компьютерные сети, очень часто все компьютеры данной сети имеют один и тот же IP адрес, на компьютерах очень часто зарегистрировано более одного пользователя – а ведь 1 компьютер - 1 IP. Очень часто мы имеем дело с динамическими IP, которые изменяются после каждого выхода в интернет. В связи с этим рекомендовано установить значение ID, но незарегистрированные пользователи не смогут принимать участие в опросах.
«Максимальное количество вариантов ответов» - ограничение количества вариантов ответа в опросах. Рекомендуемое число до 10. Опросы с числом ответов более 10 очень тяжелы для понимания пользователем.
«Принудительное удаление дублирующихся ответов» - включите данную опцию для удаления повторных вариантов ответа данного опроса из базы данных. Иначе дублирующиеся значения обрабатываться не будут. Отсутствие повторных ответов – хороший тон при создании опросов.

#4. Templates

Опросы полностью поддерживают темплейты – редактирование их в папке polls.tpl. Ваши плагины могут использовать пользовательские темплейты (см. раздел API).
Темплейт каждого голосования состоит из 3 частей:
POLL_VIEW - для пользователей, которым доступно голосование
POLL_VIEW_VOTED – для пользователей, которые уже проголосовали
POLL_VIEW_DISABLED – для пользователей которым недоступно голосование

#5. API

Прим.: Данный раздел написан для версии cotonti 0.0.2. В последующем API опросов может быть немного изменен.
Для использования API опросов необходимо подключить файл polls.functions.php:

require_once($cfg['system_dir'].'/core/polls/polls.functions.php');
Все функции в данном файле можно разделить на 2 части: функции для создания опросов и вывода опросов.
Первая часть (функции по созданию опросов):
sed_poll_edit_form($id, $multiple=1) – вывод формы для создания голосований. Передаваемые значения $id – ID опроса или ‘new’ для нового опроса, $multiple – для создания флажка «разрешить множественный выбор»
функция возвращает:
list($poll_text, $poll_options, $poll_date, $poll_settings)
  • $poll_text – поле ввода с названием опроса
  • $poll_options – массив полей с вариантами ответов
  • $poll_date – дата создания опроса
  • $poll_settings – флажок «разрешить множественный выбор»
sed_poll_check() – функция проверки правильности заполнения формы создания голосования. Изменяет глобальную переменную $error_string. Также данная функция импортирует все необходимые для работы переменные.

sed_poll_save($type='index') –сохраняет опрос в базу при отсутствии ошибок. $type – переменная, которая необходима для правильного формирования записи в базе. Сейчас есть два варианта ‘forum’ и ‘index’ для сохранения нового форум-опроса и опроса на главной странице соответственно. Вы можете использовать произвольное значение для ваших плагинов.

Пример работы данных функций смотрите в файле …\system\core\admin\admin.polls.inc.php

Вторая часть (функции вывода опросов):
sed_poll_vote() – сохраняет вариант ответа голосовавшего пользователя.
sed_poll_form($id, $formlink='', $skin='') – функция создает форму опроса переменные $id- ID опроса, который требуется вывести на экран. $formlink – ссылка на страницу, на которой находится данный опрос, если нет значения – то ссылка на index.php. $skin – для использования опросами ваших темплейтов – если пустая строка, то темплейт по умолчанию. Возвращает list($polltext, $poll_form). Первая переменная это заголовок голосования, вторая – форма голосования.
Пример использования данных функция смотрите в плагине indexpolls.

#6. Заключение

Добро пожаловать в мир Cotonti. Надеемся, он уже вам понравился.
По вопросам и замечаниям в работе модуля опросов обращаться к esclkm


1. Nafanya  2009-02-06 17:55
У меня вопрос. Как сделать, если это возможно, чтобы опросы выводились в header или footer а не только в index-се?
2. Sergeich  2009-02-06 22:53
Кстати, действительно, может дать опросам возможность по умолчанию и в гапку и в подвал выводиться?
3. Alex300  2009-02-25 04:38
Возможно ли Если пользователь авторизован, то проверять по ID, если нет, то по IP? Это решает проблему и сетей, где может быть несколько юзеров на 1 IP и разрешает ("не всегда") голосовать незарегистрированным пользователям? На Sed я в свое время дорабатывал опросы чтобы они проверялист именно так.
Спасибо.
4. dasknix  2010-01-05 13:01
Думаю многим может быть полезен способ достижения возможности голосовать гостям (незарегистрированным посетителям сайта).

Данное решение может быть полезно для порталов и др. посещаемых соцально-ориентированных
проектов.


Для этого просто меняем секцию < !-- BEGIN: POLL_VIEW_DISABLED -->, вставляя
в неё код от < !-- BEGIN: POLL_VIEW -->, т.е. так:

< !-- BEGIN: POLL_VIEW_DISABLED -- >
{ POLL_FORM_BEGIN }
< table id="tdx_poll_alltbl" >
< !-- BEGIN: POLLTABLE -- >
< tr >
< td >< label >{ POLL_INPUT }{ POLL_OPTIONS }< /label >< /td >
< /tr >
< !-- END: POLLTABLE -- >
< tr >
< td >< center >{ POLL_FORM_BUTTON }< /center >< /td >
< /tr >
< /table >
{ POLL_FORM_END }
< !-- END: POLL_VIEW_DISABLED -- >

После - устанавливаем значение "IP" для опции "Способ запоминания голоса" в разделе "Модули -> Опросы"

P.S. На всякий случай не забудьте сделать копию оригинала.
5. loup54  2017-09-19 12:36

Интересно, на основе данного модуля, можно создать викторину?

Only registered users can post new comments