drupal函数module_invoke函数说明

module_invoke函数就是为了激活一个模块的钩子函数,然后还可以把相关的参数传递到钩子函数里。

举例如下:

$wpage = module_invoke('ixi', 'load', array('wid'=>$wid), 'ixi_wpage');

上面的解释如下,调用ixi模块的ixi_load函数,同时把array('wid'=>$wid), 'ixi_wpage'这两个参数传递给ixi_load函数。

下面是ixi.module里的ixi_load函数的内容

/**
* Get inforation from table create by ixi project.
*
* @param array  $condition
*    $condition = array('id'=>1);
* @param string $table_name
* @param int    $pager_query
* @param string $orderby
* @param string $order
*
* @return array / false
*/
function ixi_load($condition=array(), $table_name, $pager_query=0, $orderby='', $order='DESC'){
$query                = array();
$params                = array();
$placeholder     = '%d';
$sql                     = 'SELECT * FROM {'.$table_name.'}' ;

foreach ($condition as $key=>$value){
if (is_string($value)) {
$placeholder = "'%s'";
}
$query[]     = "$key=$placeholder";
$params[]    = $value;
}
if (count($query)) {
$sql .= ' WHERE '.implode(' AND ', $query);
}
if ($orderby) {
$sql .= " ORDER BY $orderby ".$order;
}

if ($pager_query) {
$result = pager_query($sql, $pager_query, 0, NULL, $params);
}else {
$result = db_query($sql, $params);
}
if (db_num_rows($result)) {
while ($row=db_fetch_object($result)){
$items[] = $row;
}
return $items;       
}else{
return false;
}
}