Agregar archivo javascript en el pie de página y estilos personalizados


9

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?


1
Debe mantener su pregunta en un tema. Tienes dos preguntas aquí.
Bakual

1
hay una extensión que podría ayudar: extensiones.joomla.org/extension/scriptsdown
noiragneau

Respuestas:


6

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.


Sí, era consciente de eso, pero WordPress tiene este tipo de características con respecto a mis preguntas en el caso de los scripts y el CSS personalizado, por lo que Joomla debería agregarlo.
dev-m

Hubo discusiones para agregar algo así. Personalmente, no veo la ventaja de agregarlo en la parte inferior sobre aplazar / async.
Bakual

2

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,


2

$ 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


2

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:

  1. ScriptsDown
  2. JCH Optimize

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 :)


2

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:

<? php
$ head = $ doc-> getHeadData ();
// Retire Scripts
unset ($ doc -> _ scripts [JURI :: root (verdadero). '/media/system/js/mootools-more.js']);
?>

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.


0

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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.