2010-06-06 63 views
4

我正在尋找一種強制Drupal在特定頁面上使用1.4的方法。在特定頁面上的drupal jQuery 1.4

這是一樣的這個老問題:drupal jQuery 1.4 on specific pages

它看我一段時間試試,我標記爲正確答案。但是因爲我對模塊開發不熟悉,所以根據答案我找不出來。

從答案中的代碼是這樣的:

/** 
* Implementation of hook_theme_registry_alter(). 
* Based on the jquery_update module. 
* 
* Make this page preprocess function runs *last*, 
* so that a theme can't call drupal_get_js(). 
*/ 
function MYMODULE_theme_registry_alter(&$theme_registry) { 
    if (isset($theme_registry['page'])) { 
    // See if our preprocess function is loaded, if so remove it. 
    if ($key = array_search('MYMODULE_preprocess_page', 
     $theme_registry['page']['preprocess functions'])) { 
     unset($theme_registry['page']['preprocess functions'][$key]); 
    } 
    // Now add it on at the end of the array so that it runs last. 
    $theme_registry['page']['preprocess functions'][] = 'MYMODULE_preprocess_page'; 
    } 
} 

/** 
* Implementation of moduleName_preprocess_hook(). 
* Based on the jquery_update module functions. * 
* Strips out JS and CSS for a path. 
*/ 
function MYMODULE_preprocess_page(&$variables, $arg = 'my_page', $delta=0) { 

    // I needed a one hit wonder. Can be altered to use function arguments 
    // to increase it's flexibility. 
    if(arg($delta) == $arg) { 
    $scripts = drupal_add_js(); 
    $css = drupal_add_css(); 
    // Only do this for pages that have JavaScript on them. 
    if (!empty($variables['scripts'])) { 
     $path = drupal_get_path('module', 'admin_menu'); 
     unset($scripts['module'][$path . '/admin_menu.js']); 
     $variables['scripts'] = drupal_get_js('header', $scripts); 
    } 
    // Similar process for CSS but there are 2 Css realted variables. 
    // $variables['css'] and $variables['styles'] are both used. 
    if (!empty($variables['css'])) { 
     $path = drupal_get_path('module', 'admin_menu'); 
     unset($css['all']['module'][$path . '/admin_menu.css']); 
     unset($css['all']['module'][$path . '/admin_menu.color.css']); 
     $variables['styles'] = drupal_get_css($css); 
    } 
    } 
} 

我需要jquery_update 1.3.2要對節點類型的「博客」和「視頻」未設置。有人可以幫我嗎?

謝謝。

回答

2

MYMODULE_preprocess_page函數中,$ scripts變量包含一個數組,其中包含有關將被添加到頁面的所有JavaScript的信息。

如果你想從頁面中刪除一個JS文件,你應該從$ scripts數組中刪除它的條目(然後更新$ variables ['scripts'])。這就是unset函數正在做的事情。

如果你想刪除的jQuery是多數民衆贊成附帶的Drupal的一個,你可以將其刪除:

unset($scripts['core']['misc/jquery.js']); 

否則,你就必須print_r在$腳本變種,以便找到您需要刪除的條目。

+0

如何檢查內容類型,以便知道何處取消設置? 現在它通過arg工作。 謝謝。 – Mark 2010-06-07 08:37:48

+0

不知道這是否是正確的方法,但我會通過根據nid(從$ _GET ['q'])查詢'type'字段的'node'表來執行此操作。 – 2010-06-08 17:07:28

相關問題