В админке есть форма добавления материала - это все ок. Только хочется чтобы сторонний посетитель сайт мог добавлять контент на сайт, но:
- некоторые поля при добавлении материала были скрыты, и принимали какие то дефолтные значения - эти поля служат внутренним целям
- после добавления материала человек переходил бы не на страницу созданного материала, а на страницу, где ему бы выдавалась некоторая дополнительная информация по дальнейшим действиям, с учетом того что пользователь засабмитил в форму
- если при добавлениии материала возникли какие-то ошибки (неверно введенные данные и т.п), то хочется чтобы ошибки показывались в стандартном виде для drupal (ну типа сверху на над формой, в красной рамочке (зависит от темы конечно
Вопрос - куда копать?
Спасибо.
Комментарии
Самое лучшее - в сторону разработки собственных модулей, тут вы получите невероятную гибкость в получении оптимальных для вас решений.
Другой вариант - использовать CCK и дополнительные модули для него (в т.ч. есть возможность и скрывать поля), Actions (Workflow) - для выполнения различных действий в зависимости от действий пользователя, вроде были еще модули по редиректу на страницы в зависимости от условий...
А какой нибудь модуль есть с похожей функциональностью? Чтоб его за пример взять?
1) Модуль cck_field_perms - права на отдельные поля.
2) Ссылку на страницу создания ноды сделать не просто node/add/TYPE, а node/add/TYPE?destination=DOP_INFA. Тогда после заполнения формы будет редирект на страницу DOP_INFA.
3) Мммм... так если ошибки в форме, то форма и не отправится, и вверху будут эти ошибки в "красной рамочке"... Если нужно добавить свои собственные условия/ограничения на значения полей, то можно создать модуль с хуком nodeapi и обрабатывать случай if ($node->type == 'MYTYPE' && $op == 'validate').
edhel, а разве страница DOP_INFA. сможет учитывать что пользователь отправил в форму?
и еще... этот хук можно положить в файл темы template.php? мне кажется не стоит ради этого модуль делать?
Хуки только в модулях.
а про DOP_INFA вы не ответили
Просто ниасилил в чем проблема с DOP_INFA...
ну то есть, предоположим что при добавлении матерала человек выбрал категорию A
на странице, которая появляется после добавление материала сказано - для того чтобы завершить добавление в категорию А сделайте такие то действия и свяжитесь с админом. Если добавлено в категорию В - то уже другой текст.
Тогда можно сделать хитрый редирект своим модулем. Примерно так:
<?php
function mymodule_nodeapi(....) {
if ($op == 'insert' && $node->type == 'MYTYPE') {
drupal_goto("DOP_INFA", "nid=$node->nid");
}
}
?>
Тогда в DOP_INFA передастся nid созданной ноды (через URL).
более менее понятно, спасибо