You are here

巧用arg()

问题是这样的,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,

)

}

}

逻辑大概就是这个样子。完全按照客户要求实现了相应的功能。

论坛: