2009-05-08 6 views

Répondre

3

fonctions Hook n'existent pas par son nom - ils indiquent une convention d'appellation qui peut être suivie pour répondre à ce particulier « crochet » ...

Un exemple serait la fonction node_search(). Lorsque le module de recherche appelle module_invoke_all ('recherche'), toutes les fonctions nommées foo _search(), où foo est le nom d'un module activé, sera appelée. Les détails du crochet de recherche en particulier se trouvent sur api.drupal.org.

1
function hook_search($op = 'search', $keys = null) { 
    switch ($op) { 
    case 'name': 
     return t('content'); 
    case 'reset': 
     variable_del('node_cron_last'); 
     return; 
    case 'search': 
     $find = do_search($keys, 'node', 'INNER JOIN {node} n ON n.nid = i.sid '. node_access_join_sql() .' INNER JOIN {users} u ON n.uid = u.uid', 'n.status = 1 AND '. node_access_where_sql()); 
     $results = array(); 
     foreach ($find as $item) { 
     $node = node_load(array('nid' => $item)); 
     $extra = node_invoke_nodeapi($node, 'search result'); 
     $results[] = array('link' => url('node/'. $item), 
          'type' => node_invoke($node, 'node_name'), 
          'title' => $node->title, 
          'user' => theme('username', $node), 
          'date' => $node->changed, 
          'extra' => $extra, 
          'snippet' => search_excerpt($keys, check_output($node->body, $node->format))); 
     } 
     return $results; 
    } 
}