2010-06-06 7 views
4

Je cherche un moyen de forcer Drupal à utiliser 1.4 sur des pages spécifiques.drupal jQuery 1.4 sur des pages spécifiques

C'est la même chose que cette vieille question: drupal jQuery 1.4 on specific pages

Il me regarde un certain temps pour essayer de la réponse que je marqué correcte. Mais parce que je suis nouveau dans le module dev globalement je ne pouvais pas le comprendre en fonction de la réponse.

Le code de cette réponse ressemblait à ceci:

/** 
* 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); 
    } 
    } 
} 

J'ai besoin jquery_update 1.3.2 être unset sur le nœud-types de 'blog' et 'vidéo'. Est-ce que quelqu'un peut m'aider?

Merci.

Répondre

2

Dans la fonction MYMODULE_preprocess_page, la variable $ scripts contient un tableau contenant les informations sur tout le code JavaScript qui sera ajouté à la page.

Si vous souhaitez supprimer un fichier JS de la page, vous devez supprimer son entrée du tableau $ scripts (puis mettre à jour $ variables ['scripts']). C'est ce que fait la fonction unset.

Si le jQuery vous essayez de supprimer est celui qui est livré avec Drupal, vous pouvez le supprimer avec:

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

Sinon, vous devrez print_r les scripts $ var pour trouver l'entrée que vous devez supprimer.

+0

Comment vérifiez-vous le type de contenu afin de savoir où mettre à zéro? Pour le moment, cela fonctionne via arg. Merci. – Mark

+0

Je ne sais pas si c'est la bonne façon, mais je le ferais en interrogeant la table 'node' pour le champ 'type', basé sur le nid (à partir de $ _GET ['q']). –

Questions connexes