2009-05-08 10 views

答えて

3

フック関数は名前では存在しません - 彼らは、その特定の「フック」に対応するために続くことができる命名規則を示している...

例はnode_search()機能だろう。検索モジュールがmodule_invoke_all( 'search')を呼び出すと、foo _search()のすべての関数(fooが有効なモジュールの名前)が呼び出されます。検索フックの詳細は、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; 
    } 
} 
関連する問題