问题是这样的,Drupal有一个用户登录页面,路经为user。这个页面有一个表单,就是登录表单。但是用户还启用了lightbox2模块,对登陆表单使用lightbox2。
项目的需求是,在登录页面登录表单的上面使用一句登录说明性的文字,而在lightbox2弹出的登录表单中,最上方加一个图片。因为这是两个同样的表单。
最初的解决办法是使用jquery,在jquery中使用CSS,动态的切换。就是描述性的文字和图片同时存在,使用jquery来控制相应的显示。这个办法实现了效果。
忽然想到了另外的想法,那就是使用arg()函数进行判断。lightbox2在调用表单的时候,路径中加了lightbox2这个参数。使用arg(2)可以读取这个参数。
有了这个参数,就可以进行判断了。这样问题就解决了。代码大致如下:
modulename_form_alter($form_id, &$form){
if($form_id =="user-login"){
$lightbox2 = arg(2);
if($lightbox2 = "lightbox2"){
$login_guide = t("description ......desc");
}else{
$login_guide = t("<img src="123.gif"/>");
}
$form['guide'] = array(
'#prefix' => "<div>",
'#value' => $login_guide,
'#suffix' => "<div>",
'#weight' =>100,
)
}
}
逻辑大概就是这个样子。完全按照客户要求实现了相应的功能。