В модуле есть функция email_mail_page_form_submit нужно ее переопределить, с целью замены урл для редиректа. Как это правильно сделать?
Вот это читал http://www.drupal.ru/node/45754, но не могу разобраться
Спасибо
В модуле есть функция email_mail_page_form_submit нужно ее переопределить, с целью замены урл для редиректа. Как это правильно сделать?
Вот это читал http://www.drupal.ru/node/45754, но не могу разобраться
Спасибо
Комментарии
навешиваете свой сабмит, в нём меняете $form['redirect']
Т.е. если я правильно понял, то к форме я должен прицепить сабмит на другую функцию, в которой и поменять редирект на нужный?
Как правильно назвать эту функцию и где ее разместить нужно?
http://api.drupal.ru/api/group/hooks/6
Я с этого линка начал разбираться с данным вопросом. Мой вопрос состоит в том, есть ли какие правила названия функций, и абсолютно непонятно где ее размещать. В файле модуля, в template.php или где-то еще?
Если можно на примере, не обязательно на моем, просто так лучше доходит.
P.S. Только осваиваю друпал, поэтому хочется учиться правильно
там же чёрным по белому
Я прочитал, не знаю сколько раз, но не понял.
Можно попросить пример? Имя модуля понятно, а имя хука? Туда что ставить?
http://www.google.ru/search?q=drupal+%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%B...
http://zolexiy.com/140
form_alter
Вы не поняли. Вот функция
<?php
function email_form_alter(&$form, $form_state, $form_id) {
if ($form_id == 'email-mail-page-form') {
$form['submit'] = array(
'#submit' => array('email_mail_page_form_submit')
);
return $form;
}
}
?>
Если я правильно понял вместо email_mail_page_form_submit нужно написать имя функции, в которую внести собственные изменения.
Так вот вопрос. Имя у функции которая заменяет email_mail_page_form_submit должно по правилам как-то называться, или любое?
И где размещать эту новую измененную функцию и email_form_alter? template.php, файлы модуля или где-то еще?
в шестерке form_alter вызывается только из модуля...
желательно чтобы и функции валидации и сабмита были тоже в этом модуле...
И вообще... если вам просто надо перейти на нужную страницу после сабмита.. достаточно form['#action'] сменить на нужное (в хуке form_alter)
Сделал, вот так:
<?php
function email_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'email_mail_page_form') {
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Send e-mail'),
'#validate' => array('email_mail_page_form_validate'),
'#submit' => array('email_mytheme_mail_page_form_submit'),
);
}
return $form;
}
function
email_mytheme_mail_page_form_submit($form, &$form_state) {email_mail_page_form_submit($form, &$form_state);
$form_state['redirect'] = 'company/staff';
}
?>
Добавил в файл модуля email
Спасибо всем!
В таком случае, проще было хакнуть оригинальную функцию сабмита..
а если по правильному... достаточно было добавить свой модуль:
папка модуля
файл ИМЯ_МОДУЛЯ.info
файл ИМЯ_МОДУЛЯ.module
ИМЯ_МОДУЛЯ.info - копируем переименовываем подобный файл другого модуля, меняем параметр имя модуля на свое, и группу (как правильно заполнить ИМЯ_МОДУЛЯ.info есть куча инфы в инете)
ИМЯ_МОДУЛЯ.module - добавляем в него приведенный выше код (незабываем про <?php в начале файла, закрывающий не нужен) меняем наименование функций на нужные (префикc меняем на имя модуля)
и фсе-))
А иначе при следующем обновлении модуля "email", ваши правки "затруться"