News:

SMF 2.1.4 has been released! Take it for a spin! Read more.

Main Menu

SMF2.1 loadJavaScriptFile en template_html_below

Started by Dhayzon, May 05, 2020, 08:11:41 PM

Previous topic - Next topic

Dhayzon

estoy intentando cargar un archivo dentro de esa función y no carga

function template_html_below()
{

// Load in any javascipt that could be deferred to the end of the page
template_javascript(true);
loadJavaScriptFile('index.js', array('defer' => false,'minimize' => false), 'theme_react');

echo ' 
</body>
</html>';
}


intente a si

function template_html_below()
{
      loadJavaScriptFile('index.js', array('defer' => false,'minimize' => false), 'theme_react');
// Load in any javascipt that could be deferred to the end of the page
template_javascript(true);


echo ' 
</body>
</html>';
}


tampoco  carga sera que esa función solo funciona en template_html_above

NI Modo, solo me queda hacerlo a la antigua

Suki

La funcíón loadJavaScriptFile() se debe de llamar desde tus archivos Source, no en tus templates. Solo tienes que activar la opción "defer" a true y loadJavaScriptFile() hace el resto.

Nota, se removio la oción de poner archivos JS al final ya que ya no es necesario hacerlo, ahora se usa la propiedad "async" y los navegadores saben como cargarlo asíncrono.
Disclaimer: unless otherwise stated, all my posts are personal and does not represent any views or opinions held by Simple Machines.

Diego Andrés

Se pueden usar solo antes de template_css, y template_javascript. En otro lugar o template no como dice Suki.

SMF Tricks - Free & Premium Responsive Themes for SMF.

Dhayzon

entonces ya vimos que abajo no se puede colocar <script src="//localhost:8080/nuevo/Themes/React/scripts/theme.js"></script>

por  las nuevas funciones de los navegadores,  por  otro lado  loadJavaScriptFile() no se debe usar en plantillas, se puede usar (pero no se debe)

Ahora la pregunta es;

si los autores de themas quieren agregar sus propios archivos con sus propias propiedades

¿ como se hace?


por ejemplo
../scripts/
uno.js

../scripts/extra/

dos.js

y quiero que template_javascript() lo cargue   en el orden

dos.js
uno.js

y que dos.js sea comprimido


se puede  realizar eso? 

según lo que puede entender del  código fuente de smf2.1 template_javascript() lo que hace es cargar todo los js de la carpeta /scripts/


ya me reburuje  entonces la pregunta seria ¿cual es la forma correcta de agregar mis js en plantillas?

seguiría siendo de la forma tradicional?

<script src="//localhost:8080/nuevo/Themes/React/scripts/extra/dos.js"></script>

<script src="//localhost:8080/nuevo/Themes/React/scripts/uno.js"></script>







 

Diego Andrés

Si se puede usar las funciones únicamente en el index.template.php, pero solamente antes de template_css, y template_javascript

Y tiene un parámetro adicional para ponerle el orden a los archivos.
Por ejemplo el index.css creo que es el 0 (quizás estoy equivocado no recuerdo), tú puedes poner un archivo css en la posición 500 o -500.

SMF Tricks - Free & Premium Responsive Themes for SMF.

Dhayzon

Claro lo que hace  loadJavaScriptFile
loadJavaScriptFile('index.js', array('defer' => true,'minimize' => false), 'theme_react');

es agregar el archivo index.js a una matriz   $context['javascript_files'], con todas las opciones que  posee incluido  el defer

entonces  estaría bien usarla de esta forma? claro esta que funciona


loadJavaScriptFile('index.js', array('defer' => true,'minimize' => false), 'theme_react');
// load in any javascript files from mods and themes
template_javascript();


pero ahora el tema es de si se debe o no jjaja pero  bueno ya tengo más o menos todas mis dudas aclaradas

otro dato curioso

por que me carga automaticamente el archivo /theme.js/ y no otros archivos que pongo en ../scripts/
esta predefinido que  theme.js se cargue?  bueno es una duda mínima

pero ya casi voy entendiendo las cosas

Suki

Primero habrá que definir que quieres hacer.

¿Quieres hacer un theme y cargar tus propios archivos css y js?

¿Quieres hacer un mod?
Disclaimer: unless otherwise stated, all my posts are personal and does not represent any views or opinions held by Simple Machines.

Dhayzon

Primero habrá que definir que quieres hacer.

muchas cosas, imagina una simple plantilla html con muchas características que requieran js, bootrap js  , datatable js,  etc o propios js escritos, que cambien el color a un link, etc sliders, modals, aleertas, etc etc

¿Quieres hacer un theme y cargar tus propios archivos css y js?

exacto.


¿Quieres hacer un mod?
No, creo que esta resuelto esa parte


tengo una pequeña espina clavado aquí en el corazón debido a que existe muchos archivos js  que se cargan aun que esto se resuelve con la función de   comprimir todo, no me termina convenciendo pero de eso no se trata  esto jjajaj







Suki

Tu como themer tienes la opción de deshabilitar cualquier archivo js/css:  https://github.com/SimpleMachines/SMF2.1/blob/release-2.1/Sources/Subs.php#L4055

Cada archivo js/css que se va a cargar tiene un ID especifico, puedes setear un array en $settings:

https://github.com/SimpleMachines/SMF2.1/blob/release-2.1/Themes/default/index.template.php#L70

que contenga los ids de los archivos que quieres deshabilitar.
Disclaimer: unless otherwise stated, all my posts are personal and does not represent any views or opinions held by Simple Machines.

Dhayzon

esas opciones si las habita visto pero  pensé que lo usaban los mods, pero genial ya probé y funciona como quiero esa parte

pero a lo que  vine a preguntar la solución  es usar

loadJavaScriptFile('index.js', array('defer' => true,'minimize' => false), 'theme_react');

antes de template_javascript(); para utilizar las propiedades nativas de smf,

y lo menos  recomendado seria usar la forma antigua
<script src="etc.js"></script>


Marco como solucionado por que aclare todas mis dudas


Advertisement: