2012-09-18 22 views
11

He sido desarrollador de Joomla desde hace casi un año. He estado luchando para importar jQuery en joomla todos los días. Joomla viene con mootools. Cuando importo jQuery, se bloquea. Además, cuando creo módulos, tengo que importar jQuery en cada módulo, lo que hace que el sitio sea lento. A veces hace que todo el sitio se cuelgue. Quiero que tanto mootools como jquery funcionen codo a codo para que pueda usar ambos sin fallas.Importación de jQuery a Joomla

¿Cuál es la mejor manera de importar jQuery en Joomla? ¿Hay algún lugar específico donde se deba realizar la importación para usar una biblioteca jquery en todo el sitio (tanto en el servidor como en el frontend)?

Gracias

Respuesta

18

Este es el código que usamos para asegurar que solo se importe 1 copia de jQuery. Simplemente comprueba si jQuery ya está siendo importado y si no, entonces tenemos que importar :)

Joomla 2,5

<?php 
    $app = JFactory::getApplication(); 
    if (!$app->get('jquery')) 
    { 
    $app->set('jquery', true); 
    JFactory::getDocument()->addScript(JUri::root() . 'templates/template_name/js/jquery.js'); 
    } 
?> 

Joomla 3.x (sin modo de conflicto):

JHtml::_('jquery.framework'); 

Joomla 3.x (modo normal):

JHtml::_('jquery.framework', false); 

Debe insertar este código en index.php de su plantilla, preferiblemente cerca de la parte superior para que recuerde dónde está. Si no desea sustituir el archivo index.php de su plantilla, a continuación, también se puede desarrollar una pequeña Plugin

Actualización:

Como se dijo Bobby. Muchas extensiones incluyen su propia copia de jQuery y muchas de ellas no usan este método y, por lo tanto, generan conflictos. Todo lo que sé es que cualquier buen desarrollador debería saber que las bibliotecas jQuery múltiples causan conflictos y deberían usar este código.

+0

Gracias por el apoyo – Techie

+0

@Dasun - de nada – Lodder

+0

Me gusta esto - ¿en qué archivo lo incluye? También vale la pena señalar que bastantes extensiones de Joomla incluyen su propia versión de jQuery. –

0

Usar Joomla! 3.0 - si has pasado tanto tiempo intentando, deberías ayudar con el Joomla! JavaScript Working Group que fue creado para solucionar esto.

+0

Gracias por el soporte – Techie

+1

"Usar X" nunca es una * gran * respuesta a "¿Cómo puedo usar Y para ..." preguntas. E incluso si 3.0 resuelve mágicamente el problema, sería bueno tener * algún * detalle sobre cómo. –

+0

Entonces, @BobbyJack, ¿has leído el enlace? Al igual que la mayoría de las personas que hemos encontrado, el problema no es realmente reparable en pre-3.0 ya que no hay soporte de framework y los usuarios instalan extensiones/plugins/templates/modules "personalizados" que cargan todo tipo de bibliotecas JS obsoletas (incluyendo jQuery) y no hay forma de detenerlos o verificar si una biblioteca está cargada. No hay una "forma correcta" de hacerlo todavía. Es malo para señalar un enlace que trata específicamente este tema. – Craig

0

En Joomla 3.x JApplication no se extiende a partir jobject más lo que significa cuando se desea utilizar el mismo código en su extensión para Joomla 2.5 y Joomla 3.x entonces usted tiene que escribir la condición if como

if (!version_compare(JVERSION, '3', 'ge') && !JFactory::getApplication()->get('jquery', false)) { 

De lo contrario, se bloqueará !! Puede encontrar un ejemplo aquí https://github.com/Digital-Peak/DPExtensions/blob/master/mod_dpslider/tmpl/default.php#L13

2

Este es un gran complemento.

http://extensions.joomla.org/extensions/core-enhancements/performance/jquery-scripts/18327

Este plugin está destinado a ayudar a limpiar y resolver parte delantera y trasera terminar problemas al utilizar las instancias de jQuery junto a las bibliotecas Mootools .

LO QUE HACE FUERA DE LA CAJA

  • llamadas bibliotecas de jQuery y jQuery UI de la CDN de Google (con o sin protocolo) -, pero lo puede hacer a nivel local también,
  • lugares bibliotecas de jQuery después de MooTools exige una perfecta compatibilidad,
  • añade el código noConflict() junto a la llamada a la librería jQuery,
  • tiras fuera bibliotecas adicionales jQuery y jQuery UI, incluyendo el noConflict() llama añadido por otros módulos o plugins,
  • le permite elegir el estilo básico de jQuery UI o el tema personalizado.

LO QUE PUEDE TWEAK

  • bibliotecas MooTools desactivar provisionalmente en el frontend,
  • habilitar o deshabilitar el plugin en partes específicas del sitio, de la plantilla de una sola página,
  • uso de informes para obtener comentarios sobre lo que ha hecho el motor de complementos,
  • agregar o eliminar scripts y hojas de estilo,
  • líneas en blanco de la tira dejados por el modificaciones realizadas a la página,
  • prevenir algunas bibliotecas para ser despojados a cabo,
  • modificar la forma en que el motor funciona por defecto (no añadir o eliminar noConflict() el código ...),
+0

Gracias por regresar y señalar esto. ¿Cuál es su experiencia con este complemento? ¿era bueno? –