Para una carga rápida de la página, necesito insertar JS al final de la página desde los componentes y módulos.
La siguiente forma de declarar scripts no funciona para insertarlo en la parte inferior porque no hay ningún parámetro para ponerlo en el pie de página.
$rsws_document = JFactory::getDocument();
$rsws_document->addScript();
Entonces, ¿cuáles son las formas concisas para cumplir mi propósito? Si Joomla no proporciona dicha funcionalidad, entonces es un inconveniente significativo para la velocidad de carga de la página.
También quiero agregar hojas de estilo personalizadas desde un módulo para que se inyecten en la página solo una vez, incluso si el mismo módulo lo agrega varias veces en esa página:
<style type="text/css"> .classname { color:red; }.....</style>
¿Cómo puedo conseguir esto?
Respuestas:
JDocument-> addScript () tiene opciones para diferir la carga del script y / o cargarlo de forma asíncrona. Consulte el documento de API: http://api.joomla.org/cms-3/classes/JDocumentHTML.html#method_addScript
Esto permitirá que el navegador cargue los scripts más adelante en el proceso, lo que ayudará con el tiempo de carga de la página.
No hay API para cargar los scripts en la parte inferior de la página. Si lo necesita, debe usar extensiones de terceros o agregarlo directamente a la plantilla.
fuente
Por ahora creo que no hay opción para cargar scripts en la parte inferior de la página.
Para su segunda pregunta, puede usar una propiedad booleana estática y configurarla como verdadera la primera vez que se procesa su CSS. Para las siguientes instancias de módulo, simplemente pruebe esta propiedad para decidir si necesita agregar su CSS o no.
Quizás un buen lugar para agregar esta propiedad estática es una clase auxiliar de módulo.
Saludos,
fuente
$ document-> addScript () siempre agrega scripts en la sección de encabezado antes de la etiqueta. Por lo tanto, si desea cargar un archivo de secuencia de comandos en la parte inferior de la página, deberá incluir el js en ese archivo simplemente usando
<script src="{pathtojacvascriptfile}"></script>
Espero que esto ayude
fuente
No hay ningún método para agregar un script al pie de página en este momento. Sin embargo, podría hacer un complemento que obtenga el resultado, busque una etiqueta con el nombre apropiado, como pie de página y use str_replace para agregar su código.
Pero puede usar estas extensiones para lograr eso:
También encontré un método. Prefiero no hackear el código central, pero eso es lo mejor que puedo encontrar en este momento.
compruebe este enlace: los archivos Javascript se incluyen en el pie de página
Espero que ayude a otros :)
fuente
Utilizamos un módulo llamado "Módulo en blanco", que permite colocar cualquier script (PHP, Java, CSS, HTML, lo que sea) y elegir dónde cargarlo (encabezado, cuerpo, final del cuerpo, etc.).
Es gratis, y lo encontré totalmente útil: http://extensions.joomla.org/extensions/core-enhancements/coding-a-scripts-integration/custom-code-in-modules/3668
Para mover las secuencias de comandos de debajo del cuerpo es un poco más de trabajo. Utilizar este:
Incluir en la plantilla:
Agregue una línea "sin definir" para cada secuencia de comandos que necesite eliminar de la cabeza. Luego agréguelo al módulo en blanco cargando en la parte inferior (¿posición de depuración?). Una ventaja más, si crea diferentes módulos en blanco es que solo puede cargar scripts donde sea necesario (como una instancia de módulo solo para motools, cargándolo solo en una página específica).
Para los estilos, también puede usar el Módulo en blanco.
Espero que esto ayude.
fuente
No lo he intentado solo todavía. Puede crear un módulo que no muestre HTML, solo imprime scripts y estilos, pero en la posición inferior del módulo en las páginas donde se muestra su otro módulo.
fuente