Подскажите, существует ли модуль, а если нет, то как создать блок (для отображения в боковой панели) со следующими свойствами:
В блоке выводится определенный текст (как и откуда вывести текст я знаю, это уже есть, допустим некий вопрос), поле для ввода ответа и кнопочка сабмит (а вот как добавить их - не знаю), каждый засабмиченный ответ, добавляет текст вопроса, ответ, дату и имя пользователя в специальную ноду(страничку) - одну и ту же.
Т.е. пользователю отображается блок. В блоке вопрос. К примеру
Кто написал "Фауст", %username%?
[ ] [Submit]
Все отправленные ответы сохраняются в одной и той же ноде в виде
[дата][время][пользователь] [текст вопроса] [текст ответа]
в хронологическом, или обратно-хронологическом порядке.
Кто что посоветует для реализации? Особенно волнует как сохранить введенный текст и ответ в одной и той же ноде.
Или в некой глобальной переменной которую потом выводить в ноду.
Комментарии
О Модуле таком не слышал.
По мне так только при помощи PHP. Создаёте блок, указываете формат ввода код-PHP, и там пишите необходимый код.
http://drupal.org/project/formblock или блоки делай с помощью panels, там помоему уже как угодно...
Пока решил часть задачи.
Создал материал-страницу и там указал следующее
<?php
echo (file_get_contents('text.txt'));
?>
Осталось придумать как записывать в файл
дату, время, текст вопроса и текст ответа.
Т.к. я в РНР не силен то для меня это задача на весь день Буду благодарен если поможете.
ЗЫ, в самом блоке
<?php
global $user;
$mission = variable_get('site_mission', '');
$quotes = explode("||",$mission);
$quote = str_replace('%username%', $user->name, $quotes[rand(0, count($quotes)-1)]);
print($quote);
$logfile = '/other/test.txt';
$cnr_date = date("d.m|H:i:s");
$cnr_counter = $logfile;
$cnr_fp = fopen($cnr_counter, "a");
$cnr_data = $cnr_date . $user->name . $quote . "
";
fputs($cnr_fp, $cnr_data);
fclose($cnr_fp);
?>
< form action="" method="post" >
< input type="text" name="answer" maxlength="30">
< input type="submit" name="write" value="+">
< /form >
тем не мение в файл ничего не пишет, хотя там права 777. Не могу понять, как при нажатии сабмита, собственно выполнялась бы запись в файл всего этого + введенного в поле текста (не знаю как передать его из поля в скрипт).
<?php $cnr_data = $cnr_date . $user->name . $quote . $введенный-в-поле-текст . "
"; ?>
можно и так, но помоему вам лучше посмотреть в http://drupal.org/project/formblock
Собственно, вот итоговый вариант:
<?php
global $user;
$mission = variable_get('site_mission', '');
$quotes = explode("||",$mission);
$quote = str_replace('%username%', $user->name, $quotes[rand(0, count($quotes)-1)]);
print($quote);
if (isset($_POST['write'])) {
$logfile = 'text.txt';
$cnr_date = date("d.m|H:i:s");
$cnr_counter = $logfile;
$cnr_fp = fopen($cnr_counter, "a");
$cnr_data = $cnr_date . "| ". $_POST['question'] . "
" . $user->name . ": " . $_POST['answer'] . "
";
fputs ($cnr_fp, $cnr_data);
fclose($cnr_fp);
}
?>
< form action="<?=$PHP_SELF?>" method="post" >
< input type="hidden" name ="question" value="<?=$quote?>" /> /* это поле нужно для сохранения старого вопроса иначе записывается новый вопрос и ответ на предыдущий*/
< input type="text" name="answer" maxlength="30">
< input type="submit" name="write" value="+">