Я использую drupal 6.16. Ниже кода для hook_form_alter не работает. Я просто пытаюсь изменить 'Журнал' в 'Регистрироваться' на кнопке отправки пользовательской формы входа в систему
<?php
//$Id$
function helloworld_form_alter($form_id,&$form) {
switch ($form_id) {
case 'user_login_form':
// Change 'Log in' to 'Sign in'.
$form['submit']['#value'] = t('Sign in');
break;
}
}
Какой-либо способ зафиксировать это?
Помогите.Спасибо.
В вашем коде есть две ошибки:
yourModuleName_form_alter(&$form, &$form_state, $form_id)
, поэтому в вашем примере переход по id формы никогда не сработает. user_login_block
для небольшой формы входа, доступной в виде блока (обычно используется на большинстве страниц)user_login
для явной страницы входа (обычно находится под 'user/login')Обе формы в основном идентичны по структуре, поэтому вы обычно можете изменить обе в рамках одной реализации hook_form_alter
- просто добавьте еще один оператор case для проверки второй версии.
Мне проще использовать функции темы для изменения форм - в файле template.php вашей темы просто создайте это:
function YOURTHEMENAMEHERE_user_login_form($form) {
$form['submit']['#value'] = t('Sign in');
//dsm($form);
return drupal_render($form);
}
закомментированная строка (dsm) предназначена для модуля разработки Drupal , который я бы также рекомендовал установить. После того, как вы установили это и установили разрешения для своей роли администратора, чтобы вы могли его использовать, вы получите новую вкладку, которая показывает, как именно построена страница и какие массивы что делают.
Следуйте по следу в массивах, и вы сможете создать практически любую тему на своем сайте.
РЕДАКТИРОВАТЬ - о, хорошо: P Единственное, что я заметил, не используя этот хук раньше, - это то, что пример в API имеет 3 переменные в функции, но у вас есть 2! Несоответствие означает, что вы, вероятно, получили неправильную переменную:
function modulename_form_alter(&$form, $form_state, $form_id) {
switch ($form_id) {
case 'contact_mail_page':
$form['submit']['#value'] = t('Sign in');
break;
}
}
Лучше сделать это до того, как вы начнете изменять форму: Посмотрите на исходный код вашей формы и проверьте значение скрытого поля form_id - это даст вам точный form_id, который вам нужно использовать.