#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
Thanked: 15 times
Thanked: 234 times
Спасибо.
Данное решение может быть полезно для порталов и др. посещаемых соцально-ориентированных
проектов.
Для этого просто меняем секцию < !-- 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. На всякий случай не забудьте сделать копию оригинала.
Интересно, на основе данного модуля, можно создать викторину?