В последнее время много было вопросов о том, как организовать систему вопросов-ответов на сайте, и я решила сделать подборку способов и кратко описать минусы и плюсы каждого.
Задача - сделать форму для добавления вопросов и ответов на сайте, как Answers на Яху, или колонка экспертов.
Решений как всегда на Друпале, куча.
1. Очень-очень простое. Форма контактов
ФОрма контактов - модуль стандартный, есть везде, остается только включить и настроить таксономию. Человек оставляет вопрос, вы его получаете и пишете ответ. Все просто и удобно.
Минусы - иногда хочется, чтобы база вопросов формировалась и на сайте тоже, копировать же воросы-ответы бывает лень.
2. Очень простое. Новый тип ноды.
Так сделано на двух моих сайтах http://medialawca.org/node/add/qa (форма) и http://medialawca.org/help/faq (список вопросов). А также на http://www.uchi.kz/vopros (список), вопрос можно задать тут: http://www.uchi.kz/node/add/vopros.
Как видите, обычная нода - титл и текстовое поле. Можно варьировать настройки - на медиало, например, вопрос по умолчанию не опубликован, после добавления ответа, администратор снимает галку опубликовать, и вопрос выводится в списке. Это может быть неудобно, поэтому на Учи.кз я публикую вопрос сразу. Кстати, там я добавила лишнее поле через ССК, специально для ответа.
Список вопросов, кстати, выводится либо через таксономию либо через вью. Тоже все стандартно и просто.
Плюсы. Все очень просто. И лишних модулей не надо (можно обойтись и без сск).
Минусы. Всегда была за это вариант, но недавно столкнулась со следующими минусами.
На обоих сайтах позволена публикация вопросов без регистрации. Однако нужно предупреждать автора об ответе, но специальных модулей предупреждения анонимов нет, никакие субскрипшены, нотифай не помогают. Есть вариант использовать поле Email, на рабочем сайте я это не использовала, но на локали не понравилось - эмейл становится видным всем пользователям. Можно конечно, отправить ответ, а потом убрать эмейл, или можно предупреждать пользователя о том, что адрес становится видным всем.
Кроме того, ответ является частью ноды вопроса. Это очень удобно, когда есть база консультаций и редактор сам набивает тексты. Но неудобно, когда вопросы задают посетители, опять таки из-за сложности с оповещением об ответе.
Модули FAQ/FAQ ASk. Решение, как мне показалось, более сложное.
Я тут сразу скажу, что не сильно их тестировала, просто устанавливала на денвере. И сразу скажу, что не очень-то в них разобралась, и пусть лучше кто-нибудь, у кого они используются вживую, раскажет о них больше. Фак Аск позволяет выделить экспертов, которые и будут отвечать на вопросы, там можно использовать таксономию (в первых двух способах тоже можно), и для него нужен еще один модуль. Итого нужно 3 модуля. Мне же показалось:
Минусы - сложнее настраивать.
Плюсы - больше настроек больше возможностей.
Модуль Aswers. Только недавно нашла этот модуль, по моему является хорошей альтернативой 2 способу! Я поменьшей мере, начал его тестировать на одном из сайтов и потихоньку перейду к нему.
Какие плюсы? Вопрос и ответ - это разные типы нод. Т.е. можно спровоцировать пользователей самим отправлять ответы, возможно (идея только сейчас в голову пришла, не тестировала еще) использовать в связке с кармой или юзерпойнтс, прикрутить рейтинги... Кроме того, сразу в модуле есть возможность отправлять сообщение об ответе автору (только зарегистрированным).
Минусы - ну, статус модуля дев. С 2007 года. И ощущение, что он заброшен, так что неизвестно портируют ли его на 6ку... Потом, темизация возможна, но нужно залезть в код модуля и посмотреть стили, кот. использует автор, и также придется лезть в код, чтобы по другому сделать форму или, например, кнопки местами поменять... Но впринципе, как решение из коробки, очень даже ничего.
Форум. Как на друпал.ру или друпал.орг. И мне очень нравится как тут все
Наверное, это удобно, если есть большое сообщество. И если форум используется только для вопросов.
Гостевая книга. Тоже вариант. В принципе, выводится список вопросов и ответов, отвечать могут все или зарегистрированные...
Итого, а то печатать устала
Способов много. Но ни в одном из них не реализована возможность отправлять сообщение незарегистрированному пользователю об ответе. Это основной минус. А плюсы те, что Друпал позволяет сделать одно и то же многими путями и подобрать самые удобные.
Комментарии
Можно к обычному типу нодов добавить поле ССК е-мэйл, подключить модуль филд аксесс и сделать это поле видимым только тому, кому надо, можно кроме того настроить автоматическую отправку сообщения автору ноды после его модификации консультантом.
Ага, поняла, интересно. А автоматическую отправк как можно сделать?
Тут немножко сложнее, так как автор ноды незареган, но зато имеется поле с его е-мэйлом, вот из него-то и надо взять адресок и сделать экшн при обновлении ноды именно пользователем, у которого роль- консультант.
Я сначала делал на гостевой. потом всетаки использовал модуль FAQ без FAQ ask (вместо него обычный webform)
FAQ/FAQ ASk!!!
согласен с первым постом. создайте новый материал с полями вопрос и ответ, а с пом. модуля field_permissions запретите писать ответ тому, кто его задает. Выводите через views
А как можно переназвать комментарии "ответами" только для одного типа нод - собственное вопросов?
Потому что я думала и поняла, что чем проще тем лучше. Нода - вопрос, комментарий - ответ, как тут на сайте.
Но для удобства было б хорошо переназвать комментарии ответами. Подскажите плиз, как это можно сделать, или ссылку киньте!
кгхм... Зачем такие сложности? FAQ + workflow -- и делаем что хотим.
последнее время не люблю views и стараюсь делать вывод ноды правкой вида через contemplate.
возможно, я мыслю еще dbf базами, но решение вижу такое:
Добавить decimal_field поле field_YorN
Добавить поле email_field - field_usermail
Выводим ноду и проверяем наличие ответа.
Если поле $node->body с ответом пустое, то либо выводим вопрос, либо не выводим (как угодно)
Если поле с $node->body содержит запись, то проверяем наше поле field_YorN на предмет записи в нем условного кода.
Если кода нет, а ответ есть, то mail() и пишем в это поле условный код, выводим вопрос-ответ
Если есть ответ и есть код, то просто выводим вопрос-ответ
<?php
$sql="SELECT a.title, a.body, c.field_usermail, c.YorN FROM node_revisions AS a, node AS b, cccc AS с WHERE a.nid=b.nid AND b.type='myfaq' ORDER BY a.timestamp"; // поправьте, не силен в запросах. не помню куда сск создает поля (сссс и хххх)
$massiv = db_query($sql);
print '
';
- '.$row[0].'
- '.$row[1].'
while ( $row = mysql_fetch_array($massiv) ) {
if ( $row[1] ) {
if ( $row[3] !== '1' ) { // 1 - условный код
mail ( $row[2], [ваши данные] );
INSERT ..... // вписываем условный код в нужное поле
}
print '
';
print '
'
}
}
print '
';
?>
Сильно не пинайте за код, лучше покажите как его реализовать более грамотно.
Использую FAQ/FAQ_ask,
но он не совсем корректно работает. К модулям добавлен Helpers для подключения экспертов + Таксономия для групп FAQ.
И почему-то даже при наличии вопроса-ответа в одной из групп, на главной FAQ они не выводятся.
Кто-нибудь сталкивался с этим?
Мммм... может у тебя стоит pathauto и в нем что-то напутано с путями?!? У меня похожее с форумом было! Темы (ноды) создавались, но в форуме не отображались пока не поправила все aliases для форума (основная проблемма с aliases для категорий и подкатегорий).
Нашла еще один модуль, Questions.
Механизм простой: Из интересных примочек там есть возможно перенаправить пользователя на страницу - спасибо, ваш вопрос принят. Зато, нет возможности добавления нескольких ответов. В общем, неплохой компромис между отдельным типом ноды и модулем Ансверс.
много текста а "итого" нет.
"способов много" за итого не принимаю. в чем смысл поста? написать что есть вот это и то, но я не разобралась толком ни в том ни в этом?
а по сабжу есть еще webform. умеет емэйл посылать и файлы прикладывать.
Кстати, в вашем комменте тоже смысла немного Итого я не могу написать, потому что есть и то-то и то-то, я использовала и это, и это, и это, и так и не нашла себе нужного. Я вообще-то надеялась, что кто-нибудь подскажет, как прикрутить посылку эмейла. Может расскажете, как использовать вебформ, чем критиковать
Насчет эмейла о новом ответе - Сейчас я активно обдумываю идею использвать рсс2эмейл. если что-нибудь получится, отпишу.
использую CCK с встроенной премодерацией друпала
Про экспертов тема заинтересовала - как раз нужна экспертная оценка определенной категории пользователей. Чем посоветуете? Фак/аск или гостевой?
Делал так:
1. Свой тип материала
2. Поля для ответов изначально скрыты для посетителей. Доступны только паля ФИО, Адрес, Мыло, Вопрос. И кнопка отправить.
3. Флаг "Опубликовано" изначально стоит в 0.
4. По сабмиту улетает письмо одной из ролей
5. Страница "Вопрос-ответ" по умолчанию отображает только материалы с ответами.
6. Выбранной роли доступна вкладка "Ожидающие ответа", в которой очередь вопросов на ответ.
7. Этой же роли доступны поля с ответом в редактировании материала.
8. При добавлении ответа флаг опубликовано ставится в 1
9. Если задано поле мыло для задающего вопрос, то ему улетает ответ на мыло.
Донаворотить можно без проблем.
Занавес.
>4. По сабмиту улетает письмо одной из ролей
>6. Выбранной роли доступна вкладка "Ожидающие ответа", в которой очередь вопросов на ответ.
>9. Если задано поле мыло для задающего вопрос, то ему улетает ответ на мыло.
как это реализовать?
Спасибо
Это в модулях Модули FAQ/FAQ Ask
кривоваты. мож для 6-й ветки, что-то изменилось, но ИМХО проще самому
хм, а меня FAQ/FAQ Ask как раз на 5-ом устраивают...
Не разобрался я в шестерке факов. Пока сделал через webform+faq
Приветствую всех! Очень тут у Вас интересно. Подскажите мне как в друпале улучшить сайт http://runetparty.org.ru/
Ахтунг!
ПидорасыСПАМЕРЫ В КОММЕНТАРИЯХHello world))
Вопрос к сообществу, начал делать вопрос/ответ, пересмотрел этот топик и решил сделать Views+Cck+Vote Up/Down Comments, в процессе создания натолкнулся на модуль Question/Answer он как раз добавляет необходимый функционал, можно настроить что б коммент с большим рейтингом автоматом становился ответом через заданное время, например месяц.
Можно что б хозяин ноды выбирал понравившийся ответ, вот здесь проблема, требуется выбрать номер комментария, причем сквозного, например, первый коммент имеет номер 8, его можно увидеть в адресе, этот номер и нужно вписать, но комменты в ноде нумеруются с первого.
Внимание вопрос: Как вывести сквозной номер коммента, что б пользователь мог выбрать нужный?
P.S. Номер коммента у меня выводит переменная
<?php print $comment_link; ?>
В теме она предопределена следующим образом
<?phpfunction arthemia_preprocess_comment(&$variables) {
//Add a comment number and link to comments, borrowed from Advanced Forum module.
if (!isset($comment_number)) {
static $comment_number = 0;
}
$comments_per_page = _comment_get_display_setting('comments_per_page', $variables['node']);
$page_number = $_GET['page'];
if (!$page_number) {
$page_number = 0;
}
$comment_number++;
$post_number++;
$fragment = 'comment-' . $variables['comment']->cid;
$query = ($page_number) ? 'page=' . $page_number : NULL;
$linktext = '#' . (($page_number * $comments_per_page) + $comment_number);
$linkpath = 'node/' . $variables['node']->nid;
$variables['comment_link'] = l($linktext, $linkpath, array('query' => $query, 'fragment' => $fragment, 'class' => 'comment-link'));
}?>
выше писали что можно Webform связать с FAQ.Можно поподробнее о реализации?
как я понимаю это делается при помощи модулей rules и webform_rules
по событию сабмита вэбформы запускам правило...создаём материал типа FAQ а вот как дальше передать данным не пойму блин...