十一/082
drupal中使用thickbox
thickbox是jquery的一个插件,并且drupal已经内置了jquery,使用起来很方便。
我们可以使用thickbox做一个弹出div层的效果,大大改善了用户体验,并且页面无需跳转,可操作性也得到了提高。使用thickbox需要注意的是在链接属性里面加上’thickbox’的class属性,然后地址跟上一些大小参数(宽和高),也就是弹出div层的宽和高,在l函数中可以很方便做到这个。
首先我们要加载三个文件,一个是thickbox的js文件,官方有压缩版本的,另一个是css文件,用来渲染效果的,最后一个就是一个临时的gif文件,在加载的时候有个临时效果,类似滚动效果。然后在我们的模块中写入类似下面的代码:
if ($user->uid) {
$output .= l(t(‘reply’), ‘test/reply/’ .$row->cid, array(‘class’ => ‘thickbox’), ‘height=200&width=400′);
}
其中l函数的地一个参数为链接显示的名字,第二个参数为链接地址,第三个参数为联合数组,这里我们指定了class为thickbox,第四个参数为查询字符串,我们指定了宽和高,这样l函数生成的整个链接地址就是:
<a class="thickbox" href="/drupal2/test/reply/19?height=200&width=400">回复</a>
点击这个链接后即可得到我们需要的效果。
另外,要想弹出一个表单,很简单,定义一个表单函数:
function chisha_reply_form($cid) {
$form['cid'] = array(‘#type’ => ‘value’, ‘#value’ => $cid);
$form['content'] = array(‘#title’ => ‘我要回复’, ‘#type’ => ‘textarea’, ‘#rows’ => 5);
$form['submit'] = array(‘#type’ => ‘submit’, ‘#value’ => ‘留言’);
return $form;
}
然后在reply映射的函数中:
if ($cid) {
print drupal_get_form(‘chisha_reply_form’, $cid);
}
exit();
这里一定要使用exit,而不能用return,要不然整个页面都会返回。类似ajax功能中的drupal_to_js()后的exit。
PS. 同事买了那本汉化的jquery教程,最近有空研读下,证明给大家看,只要有好的工具,开发人员也可以写出很漂亮,绚丽的界面和操作方法。
19:38 on 十一月 16th, 2008
这些“漂亮,绚丽的界面和操作方法”原本最开始不也是从“开发人员”手下出来的嘛。
15:12 on 九月 10th, 2010
学习中