2010-09-11 59 views
0

我對hook_view有一個奇怪的問題。問題是,除非hook_load返回無效值,例如空變量,否則不會調用hook_view。我不知道是什麼原因導致這種情況發生,而我正處於智慧的結束。我非常感謝你的幫助。值得的是,我安裝了圖像附加模塊。hook_view怪異問題drupal

的Drupal 6.x的

UPDATE

function mymodule_node_info(){ 
return array(
     'nodetype1' => array(
     'name' => t('nodetype1'), 
     'module' => 'mymodule_nodetype1', 
     'description' => t('....'), 
     'has_title' => TRUE, 
     'title_label' => t('Title'), 
     'has_body' => TRUE, 
     'body_label' => t('Body'), 
    ), 
    'nodetype2' => array(
     ...... 
     'module' => 'mymodule_nodetype2', 
     ...... 
    ), 
    'nodetype3' => array(
     ...... 
     'module' => 'mymodule_nodetype3', 
     ...... 
    ), 
    'nodetype4' => array(
     ...... 
     'module' => 'mymodule_nodetype4', 
     ....... 
    ), 
); 

} 

function mymodule_nodetype1_load($node){ 
    $query = 'SELECT f1,f2,...,f10 FROM {tb1} INNER JOIN {tb2} ON {tb1}.vid = {tb2}.vid WHERE {tb1}.vid = %d'; 

    $result = db_query($query,$node->vid); 

    return db_fetch_object($result); 
} 

function mymodule_nodetype1_view($node, $teaser = FALSE, $page = FALSE){ 
    $node = node_prepare($node, $teaser); // get it ready for display 

    $f1 = check_markup($node->f1); 
    .............. 
    $f10 = check_markup($node->f10); 

    // Add theme stuff here 
    $node->content['mycontent'] = array(
     '#value' => theme('defaultskin', $f1,...,$f10), 
     '#weight' => 1, 
    ); 

    return $node; 
} 

function mymodule_theme(){ 
    return array(
     'defaultskin' => array(
      'template' => 'node-defaultskin', 
      'arguments' => array(    
       'f1' => NULL, 
       ...... 
       'f10' => NULL, 
      ), 
     ), 
    ); 
} 
+0

您是否嘗試渲染節點? – tamasd 2010-09-11 16:45:07

+0

你能詳細說明嗎?因爲我不確定你的意思。但是,如果你問我是否在節點視圖中查看內容,是的。 hook_view不會在任何視圖中調用 - 前導視圖,節點視圖。 – Andrew 2010-09-11 21:16:38

+0

請提供代碼。 – 2010-09-11 23:25:05

回答

1

我找到了罪魁禍首。爲了防止有人遇到同樣的問題,我做了,這就是爲什麼 - 我將一個字段命名爲「TYPE」,並且當我用drupal_fetch_object檢索到hook_load內的記錄集時,我認爲結果對象的成員名稱「type」可能導致了一些命名衝突與Drupal核心成員。結果,這導致它不調用hook_view。在將我的領域重新命名爲不同的東西之後,它就像魅力一樣。所以,不要將字段命名爲「類型」。你們也許也知道,但是,由於我打算讓代碼更易於閱讀,我將這些字段重新命名爲更簡單的(f1,... f10)。抱歉,添麻煩了。並感謝大家的努力。

歡呼聲

0

這個鉤子是爲一個節點模塊中使用(使自己創建一個新的節點類型的模塊),我假設你將它用於由Drupal或CKK或其他模塊定義的節點,如果是這樣,請使用hook_nodeapi()而不是視圖參數。

http://api.drupal.org/api/function/hook_nodeapi/6

+0

不是。我使用hook_view來創建/定義模塊內部的自定義內容。我已經發布了更好的評估代碼。 – Andrew 2010-09-12 12:21:07