Модуль Poll Node для Drupal 5.x. Вставка опросов в тело ноды
В Drupal "из коробки" существует возможность создавать различного рода опросы-голосования. Функциональность этого модуля меня полностью устраивает, за исключением одной особенности - опрос представляет собой отдельный тип содержания. Это значит, что в опросе есть только, собственно, опрос, и ничего более.
Мне же кажутся более удобным голосования в стиле LiveJournal - когда опрос вставляется в контексте предшествующего или последующего текста. То есть, требуется возможность вставки опроса в произвольном месте в тексте поста. Этого можно добиться с помощью простого сниппета:
<?php $myoutput = poll_block('view'); echo $myoutput['content']; ?>
Если вставить этот код в тело поста и включить фильтр PHP, то опрос отобразится. Но отобразится только последний опрос, вставить конкретное голосование таким образом невозможно.
Все это сподвигло меня написать модуль для Drupal, добавляющий возможность вставки произвольных голосований в текст любого материала. Об этом модуле и пойдет речь в этой заметке.
Установка и настройка модуля Poll Node предельно проста.
1. Как всегда, копируем модуль в папку modules и активируем его в админке.
2. В настройках модуля (admin/settings/poll_node) указываем тег для голосований. Этот тег будет использован фильтром для идентификации местоположения опроса в тексте.

3. В настройках фильтров (admin/settings/filters) активируем фильтр Poll Node filter для нужного нам формата ввода.

4. Активируем Poll Node для всех нужных нам типов материалов (admin/content/types) в настройках каждого типа материала. По умолчанию Poll Node во всех материалах отключен. Для примера активируем Poll Node для материала типа Story.

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

После выбора нужного опроса и нажатия ссылки "Insert Poll" тег с нужным параметром вставляется на позицию курсора в форме ввода текста.

Теперь опрос будет отображаться прямо в тексте статьи.

Модуль Poll Node является надстройкой над стандартным модулем Poll. Таким образом, базовая функциональность типа блока с последним опросом не страдает. Мне лично именно такого модуля голосований в стиле LiveJournal и не хватало. Я удивлен, что его не написали раньше.
Прикладываю модуль Poll Node к этому посту. Надеюсь, он пригодится еще кому-нибудь.
PS: Да, чуть не забыл. Спасибо Уникальному Человеку за наводку на сниппет вставки последнего опроса. Именно этот кусочек кода вдохновил меня на написание модуля.
| Прикрепленный файл | Размер |
|---|---|
| poll_node_5.x_1.0.zip | 3.72 КБ |
Комментарии
Re: Модуль Poll Node для Drupal 5.x. Вставка опросов в тело ноды
Идём в ногу со временем, товарищи! Делаем модули для шестого друпала!
Re: Модуль Poll Node для Drupal 5.x. Вставка опросов в тело ноды
Будет и для шестого, но позже. Пока не было времени протестировать на шестерке.
Re: Модуль Poll Node для Drupal 5.x. Вставка опросов в тело ноды
Вот так друпал - совершенно несовершенен :-(
Re: Модуль Poll Node для Drupal 5.x. Вставка опросов в тело ноды
Хмм... Не совсем понял, откуда такой категоричный вывод? Кроме шуток, я считаю друпал самой гибкой, расширяемой, продуманной и грамотно спроектированной OpenSource-CMS из всех существующих на данный момент.
Re: Модуль Poll Node для Drupal 5.x. Вставка опросов в тело ноды
А на чем основана такая уверенность в совершенстве друпала?
Re: Модуль Poll Node для Drupal 5.x. Вставка опросов в тело ноды
А где я писал, что он совершенный? ;-) Совершенства не существует. Но из существующих открытых CMS у него, на мой взгляд, самая продуманная и грамотная архитектура. Отсюда модульность, простая расширяемость.
Re: Модуль Poll Node для Drupal 5.x. Вставка опросов в тело ноды
Не совсем нравится то, что и логика и код идут в одном.
Re: Модуль Poll Node для Drupal 5.x. Вставка опросов в тело ноды
Это ты насчет того, что весь модуль для друпала - это, фактически, один файл .module? Да, это может показаться неправильным. Но, с другой стороны, в друпале настолько грамотное api, что непосредственно в модуле имеет место быть очень высокий уровень абстракции. Фактически, просто описываются нужные формы. Ну и, конечно, логика к ним. Но логика даже в модуле очень отделена от описания тех же форм. И при желании ее запросто можно вынести в отдельные файлы.
Re: Модуль Poll Node для Drupal 5.x. Вставка опросов в тело ноды
Вот мне неправильным и показалось :) Я после Django-вского MVC с трудом отношусь к подобным извращениям.
Re: Модуль Poll Node для Drupal 5.x. Вставка опросов в тело ноды
Ну я согласен, питон гораздо удобней и продуманней сам по себе. Но для PHP-CMS друпал сделан все-таки очень красиво. Имхо, это лучшее, что можно было выжать из такой некрасивой технологии, как PHP. ;-)
Есть косячок
Хотелось бы, чтобы после голосования происходил возврат в ноду, куда опрос был включен с помощью PullNode, а не в ноду самого голосования.
Re: Есть косячок
Да, я тоже об этом думал. Буду смотреть, как это можно реализовать.
Там кроме этого еще есть две потенциальные бреши в безопасности и одна некрасивость, связанная с JavaScript. Ну не веб-программист я ни разу. Это, по сути, мой второй опыт работы с PHP. ;-) Вообще говоря, меня исключительно порадовал подход друпаловской команды к качеству. Я делал запрос на доступ к CVS на друпал.орг, чтобы засабмитить туда модуль. Там провели ревизию моего кода и указали на эти три косячка. Два уже исправил, с джаваскриптом сейчас разбираюсь. В общем, следите за анонсами, думаю, скоро будет исправленная версия. :-) И на друпал.орг тоже.
Re: Есть косячок
Выложил сюда новую версию, с исправленными недочетами. А насчет возврата в ноду буду еще смотреть.
Re: Модуль Poll Node для Drupal 5.x. Вставка опросов в тело ноды
Кнопка Вставить Опрос не нажимается. Соответственно опрос не появляется. Что делать?
Re: Модуль Poll Node для Drupal 5.x. Вставка опросов в тело ноды
Странно. А какую версию друпала вы используете?
Re: Модуль Poll Node для Drupal 5.x. Вставка опросов в тело ноды
и если просто код вставлять - тоже не отображается.
А стандартный
А стандартный Poll позволяет делать, чтобы можно было выбирать один вариант?
А есть такой же модуль только для Advanced Poll?
Re: А стандартный
Что значит "один вариант", не совсем понял? По умолчанию именно один вариант из нескольких и выбирается.
Голосование за один вариант - как?
Добрый день!
А можно ли сделать на базе этого модуля или какого-то другого просто счетчик нажатий на кнопку с выводом количества проголосовавших на сайт?
Т.е. чтобы был выбор не из нескольких вариантов, а просто один вариант, и посетитель либо голосовал за него, либо нет.
Заранее спасибо за ответ!
Влад.
Re: Голосование за один вариант - как?
а просто конкурсы проводить?
Они голосуют, а мы - админы - видим кто за кого и как пороголосовал?
к примеру 3 вопроса и каждый по 3 варианта ответа.
Билеты на концерты и в кино раздавать начнем!
Может поднаправите?
Re: Модуль Poll Node для Drupal 5.x. Вставка опросов в тело ноды
Для Друпала 6-го даешь этот модуль!!! Очень нужен, ценная весщь. На .орге почему его нет?
Re: Модуль Poll Node для Drupal 5.x. Вставка опросов в тело ноды
Все руки не доходят сделать его и для шестерки. На орг до сих пор не выложил по той же причине. Но расчитываю все-таки в обозримом будущем это сделать.
Re: Модуль Poll Node для Drupal 5.x. Вставка опросов в тело ноды
Ждем для Друпала 6-го !!!
Re: Модуль Poll Node для Drupal 5.x. Вставка опросов в тело ноды
Друпал 6 нужен бы.
Re: Модуль Poll Node для Drupal 5.x. Вставка опросов в тело ноды
Для 6-го друпала уже есть подобный модуль. Не помню, правда, как он называется.
Re: Модуль Poll Node для Drupal 5.x. Вставка опросов в тело ноды
Жаль что не помните как называется. Мне понадобился он.
Re: Модуль Poll Node для Drupal 5.x. Вставка опросов в тело ноды
Эх мне бы тоже пригодился - может вспомните?
Pingback
[...] модуля полностью такая же, как в версии для Drupal 5.x. Прикладываю его к этому посту. В модуле есть [...]
Re: Модуль Poll Node для Drupal 5.x. Вставка опросов в тело ноды
полезная статья, спасибо!
Re: Модуль Poll Node для Drupal 5.x. Вставка опросов в тело ноды
полезно, очень признателен
Отправить комментарий