2011-05-27 23 views
0

我有以下函數作爲概念驗證來從節點字段插入js變量。哪個鉤子用於從節點數據插入JavaScript變量

它在hook_preprocess_html(),因爲js已經在以後的鉤子中呈現。通常我會從$vars['node']得到變量,但我不認爲它存在於hook_preprocess_html()

function mymodule_preprocess_html(&$vars) { 
    $reference = $vars['page']['content']['system_main']['nodes'][47]['field_reference']['#items'][0]['value']; 
    drupal_add_js(array(
    'field_reference' => $reference 
), 'setting'); 
} 

有沒有更好的方式來訪問節點字段變量,在以後的鉤子也許?

回答

3

當一個節點對象在傳遞給預處理函數的變量中不可用時,則可以從menu_get_object()獲得一個節點對象,該節點對象默認返回一個節點對象,該節點的ID作爲URL的第二個元素傳遞例如「節點/ 1」)。如果路徑不是以「節點」開始的,這意味着所顯示的頁面不是節點頁面,則該函數將返回NULL

if ($node = menu_get_object()) { 
    // The URL for the page being shown is node/<nid>. 
} 

如果你想使用該節點對象的$variables陣列通過預處理功能,那麼你可以使用hook_preprocess_page(),爲此$variables['node']也可能是空的,或hook_preprocess_node(),對於該節點對象總是通過$variables['node']

+0

謝謝,正是我所需要的;) – bluegray 2011-05-27 13:26:42