最近一段时间使用Drupal6写了点东西,觉得Drupal确实强大,比如可以使用hook来修改已有Module的表单内容。
例如,登录页面。
可能,我们要修改这个页面,使之符合需要。首先,大概我们立马会想到直接修改user模块的源代码就可以了。当然这是种方法,但我认为这种方法不推荐。现在我们可以使用drupal的API的一个方法来处理。
- hook_form_alter($form, $form_state, $form_id)
其中hook就是我们自己的模块名了,例如我们新建的模块叫做register,那么使用下列代码就可以修改登录页面了。
- function register_form_alter($form, $form_state, $form_id) {
- // We'll get called for every form Drupal builds; use an if statement
- // to respond only to the user login block and user login forms.
- if ($form_id == 'user_login_block' || $form_id == 'user_login') {
- //modify the user login title
- drupal_set_title(t("Log in"));
- // Change 'Log in' to 'Sign in'.
- $form['submit']['#value'] = t('Sign in');
- }
- }
结果如下:
通过这个方法,我们可以根据需要修改已有模块的form,不用修改模块的源代码。