Desarrollé un módulo recientemente que requería que se inyectaran ciertos archivos JS y CSS en <head>
cada página. Inicialmente, usé:
$doc =& JFactory::getDocument();
$doc->addScript(JURI::base(true).'/modules/mod_x/js/mod_x.js');
Sin embargo, noté que cuando se habilitaba el almacenamiento en caché, el sitio cargaba tanto una versión en caché como una versión /cache
sin caché /modules/mod_x/js/
, lo que causaba errores de JS.
Cuando cambié esto a:
JHtml::script(Juri::base().'modules/mod_x/js/mod_x.js');
El script se cargó solo una vez, desde la memoria caché, resolviendo estos errores.
Yo leo en los documentos que el addScript
método era más 'bajo nivel' que el JHtml:script
método, pero más allá de decir que ...
Por supuesto, también necesitará codificar manualmente algunos de los pasos [que JHtml: script hace por usted] que se realizarían automáticamente usando el [JHtml: método de script] anterior [si usa addScript].
... no se dan más detalles.
Entonces, ¿cuál es la diferencia? Supongo que JHtml:script
finalmente llama addScript
a un objeto de documento en algún momento, pero ¿se toman primero otros pasos intermedios?