特定页面上的 drupal jQuery 1.4 [英] drupal jQuery 1.4 on specific pages
问题描述
我正在寻找一种方法来强制 drupal 在特定页面上使用 1.4.
I'm looking for a way to force drupal to use 1.4 on specific pages.
这与这个老问题相同:特定页面上的drupal jQuery 1.4
我花了一段时间来尝试我标记为正确的答案.但是因为我是模块开发的新手,所以我无法根据答案弄清楚.
It look me a while to try the answer which I marked correct. But because I'm new to module dev overall I couldn't figure it out based on the answer.
该答案中的代码如下所示:
The code from that answer looked like this:
/**
* 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.有人可以帮我吗?
I need the jquery_update 1.3.2 to be unset on the node-types of 'blog' and 'video'. Can someone help me out?
谢谢.
推荐答案
在 MYMODULE_preprocess_page
函数中,$scripts 变量包含一个数组,其中包含将添加到页面的所有 JavaScript 的信息.
In the MYMODULE_preprocess_page
function, the $scripts variable contains an array with the information about all JavaScript that will be added to the page.
如果你想从页面中删除一个 JS 文件,你应该从 $scripts 数组中删除它的条目(然后更新 $variables['scripts']).这就是 unset
函数所做的.
If you want to remove a JS file from the page, you should remove its entry from the $scripts array (and then update $variables['scripts']). That's what the unset
function is doing .
如果您要删除的 jQuery 是 Drupal 附带的 jQuery,您可以使用以下命令删除它:
If the jQuery you're trying to remove is the one that's shipped with Drupal, you can remove it with:
unset($scripts['core']['misc/jquery.js']);
否则,您必须print_r
$scripts 变量才能找到您需要删除的条目.
Otherwise, you'll have to print_r
the $scripts var in order to find the entry you need to remove.
这篇关于特定页面上的 drupal jQuery 1.4的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!