Есть набор словарей и тип материала, для которого предназначены эти словари.
В своем модуле, я зарегил такой путь: /project/%/add, где % будет идентификатор термина одного из словарей.
Собственно, код вот такой:
{
$items['project/%/add'] = array (
'page callback' => 'mymodule_add_project_site_page',
'page arguments' => array(1),
'access callback' => 'user_access',
'access arguments' => array('add project'),
'type' => MENU_CALLBACK,
);
return $items;
}
function mymodule_add_project_site_page($tid)
{
return '<div id="add_project_form_content">' . node_add('project') . '</div>';
}
function mymodule_form_alter(&$form, &$form_state, $form_id)
{
if ($form_id == 'project_node_form'):
/* Редактирование формы */
$form['buttons']['submit']['#ahah'] = array (
'path' => 'mymodule_add_project_form/js',
'wrapper' => 'add_project_form_content',
'method' => 'replace',
'event' => 'click',
'effect' => 'fade'
);
endif;
}
Из такой реализации вытекло два вопроса:
1. Как передать в form_alter приходящий через url $tid?
2. Если в данных формы есть какая-то ошибка, то нода, ессно, не создается, возвращаемая ahah форма не сохраняет в контролах введенные значения уровня ноды (title, description, такономия). Значения CCK контролов сохраняются. При этом если ahah убрать, то сохраняются значения всех заполненных полей.
Заранее спасибо.