This project is not covered by Drupal’s security advisory policy.
Jettison unwanted CSS and JavaScript files!
This module provides a hook-based mechanism for getting rid of unwanted CSS and JS files. Simply declare which files you want deleted, and this will take care of removing them.
There's also a nice administration interface that can be used for simple cases.
What is it good for?
Sometimes a module adds CSS or JS that you don't want (or don't want to show up on non-admin themes). Use Jettison to get rid of them.
Occasionally, modules put their CSS/JS on every page when it should really only be on a few isolated pages. A jettison hook can be used to detect the conditions and then remove strategically.
Examples
Say we have a module called Example, and we want to remove the foo.js
that some other module adds. Here's how to accomplish this in Jettison's API:
function example_preprocess_page(&$vars) {
$icky_js = drupal_get_path('module', 'foo') . '/foo.js';
jettison_js($icky_js, 'module');
}
Or to remove a CSS file from some offending theme (yes, this would be an edge case), we can do this:
function example_preprocess_page(&$vars) {
$ugly_css = drupal_get_path('theme', 'ugly') . '/foo.css';
jettison_css($ugly_css, 'theme');
}
If your needs are more sophisticated than a simple removal, you might want to look into the following API functions:
// Alter the list of JS files before they are removed from a page
function hook_jettison_js_list_alter(&$list) {
// Remove an item from the jettison list:
unset($list['foo.js']);
}
// Same as above, but for CSS
function hook_jettison_css_list_alter(&$list) {
// Remove an item from the jettison list:
unset($list['foo.css']);
}
// Alter the JS after jettisons have been made, but before the
// data is shipped off to the page template.
function hook_jettison_js_postprocess_list_alter(&$list) {
}
// Alter the CSS after jettisons have been made, but before the
// data is shipped off to the page template.
function hook_jettison_css_postprocess_list_alter(&$list) {
}
Take a look at API.php (included in the module) for details.
Interoperability (and some technical details)
Jettison uses some elaborate tricks to get around the static anti-pattern that drupal_add_js() and drupal_add_css() use to store data. It is a trick employed by some other modules (notably jQuery update). We have done our best to remain compatible with such modules.
Should you find a module that is not compatible with Jettison because it manipulates the page template data, you can mend the situation with hook_jettison_js_postprocess_list_alter()
and hook_jettison_css_postprocess_list_alter()
.
Project information
- Module categories: Performance, Developer Tools
- Created by mbutcher on , updated
- This project is not covered by the security advisory policy.
Use at your own risk! It may have publicly disclosed vulnerabilities.