Ocultando en caliente un módulo conflictivo en Drupal 6.x
Submitted by develCuy on Dom, 2011-08-14 21:25
Algunas veces necesitamos ocultar un módulo para evitar algunos conflictos. A continuación hay un caso específico:
Usar jQuery UI 1.8 en una página de administración específica
- El módulo jquery_ui está instalado y provee la versión jQuery UI 1.7
- jQuery UI 1.8 es necesario en la página de administración: "admin/build/custompage"
Problema
Si el módulo jquery_ui está instalado, el plugin de Context: "reaction block" carga jquery_ui al mostrarse cada página.
Alternativas de solución
- Parchar el módulo jquery_ui para que cargue la versión requerida cuando sea necesario
- Parchar el módulo Context para que no cargue jquery_ui cuando no se necesite
- Ocultar el módulo jquery_ui en tiempo de ejecución (al vuelo / en caliente) y cargar la versión 1.8 manualmente
Implementando la solución #3
Paso 1: Deshabilitar el módulo jquery_ui en caliente
function mymodule_init() {
if ($_GET['q'] == 'admin/build/custompage') {
$modules = module_list();
unset($modules['jquery_ui']);
module_list(TRUE, NULL, FALSE, $modules);
}
}
Paso 2: Desplegar jQuery UI en sites/all/libraries/jquery.ui-1.8
Paso 3: Cargar jQuery UI manualmente
function mymodule_load_jquery_ui() {
$path = jquery_ui_get_path() . '-1.8';
drupal_add_js($path . '/jquery-1.6.2.js'); //override jQuery
if (variable_get('jquery_update_compression_type', 'min') == 'min') {
$prefix = '/minified';
$suffix = '.min';
}
else {
$prefix = '';
$suffix = '';
}
$files = array(
'ui.core',
'ui.widget',
'ui.mouse',
'ui.draggable',
'ui.droppable',
'ui.resizable',
);
foreach ($files as $file) {
drupal_add_js($path . '/ui' . $prefix . '/jquery.'. $file . $suffix .'.js');
}
}
NOTA: El código arriba cargar el jQuery que viene con jQuery UI 1.8, podrian ser necesario desactivar dicha línea de acuerdo a la configuración de jquery_update.
Bendiciones!

develCuy's blog por Fernando Paredes Garcia se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 2.5 Perú.





Enviar un comentario nuevo