своя форма добавления материала

Главные вкладки

Аватар пользователя akor akor 26 декабря 2007 в 10:28

В админке есть форма добавления материала - это все ок. Только хочется чтобы сторонний посетитель сайт мог добавлять контент на сайт, но:

  • некоторые поля при добавлении материала были скрыты, и принимали какие то дефолтные значения - эти поля служат внутренним целям
  • после добавления материала человек переходил бы не на страницу созданного материала, а на страницу, где ему бы выдавалась некоторая дополнительная информация по дальнейшим действиям, с учетом того что пользователь засабмитил в форму
  • если при добавлениии материала возникли какие-то ошибки (неверно введенные данные и т.п), то хочется чтобы ошибки показывались в стандартном виде для drupal (ну типа сверху на над формой, в красной рамочке (зависит от темы конечно Lol

Вопрос - куда копать?

Спасибо.

Комментарии

Аватар пользователя Crazy Joker Crazy Joker 26 декабря 2007 в 11:55

Самое лучшее - в сторону разработки собственных модулей, тут вы получите невероятную гибкость в получении оптимальных для вас решений.
Другой вариант - использовать CCK и дополнительные модули для него (в т.ч. есть возможность и скрывать поля), Actions (Workflow) - для выполнения различных действий в зависимости от действий пользователя, вроде были еще модули по редиректу на страницы в зависимости от условий...

Аватар пользователя edhel edhel 26 декабря 2007 в 14:48

1) Модуль cck_field_perms - права на отдельные поля.

2) Ссылку на страницу создания ноды сделать не просто node/add/TYPE, а node/add/TYPE?destination=DOP_INFA. Тогда после заполнения формы будет редирект на страницу DOP_INFA.

3) Мммм... так если ошибки в форме, то форма и не отправится, и вверху будут эти ошибки в "красной рамочке"... Если нужно добавить свои собственные условия/ограничения на значения полей, то можно создать модуль с хуком nodeapi и обрабатывать случай if ($node->type == 'MYTYPE' && $op == 'validate').

Аватар пользователя akor akor 26 декабря 2007 в 14:53

и еще... этот хук можно положить в файл темы template.php? мне кажется не стоит ради этого модуль делать?

Аватар пользователя akor akor 26 декабря 2007 в 21:47

ну то есть, предоположим что при добавлении матерала человек выбрал категорию A
на странице, которая появляется после добавление материала сказано - для того чтобы завершить добавление в категорию А сделайте такие то действия и свяжитесь с админом. Если добавлено в категорию В - то уже другой текст.

Аватар пользователя edhel edhel 26 декабря 2007 в 22:03

Тогда можно сделать хитрый редирект своим модулем. Примерно так:

<?php
function mymodule_nodeapi(....) {
if ($op == 'insert' && $node->type == 'MYTYPE') {
drupal_goto("DOP_INFA", "nid=$node->nid");
}
}
?>

Тогда в DOP_INFA передастся nid созданной ноды (через URL).