it-swarm.dev

Aggiunta di file javascript nel piè di pagina e stili personalizzati

Per un caricamento rapido della pagina devo inserire JS alla fine della pagina da componenti e moduli.

Il seguente modo di dichiarare gli script non funziona per inserirlo in fondo perché non esiste alcun parametro per inserirlo nel piè di pagina.

$rsws_document  = JFactory::getDocument(); 
$rsws_document->addScript();

Allora, quali sono i modi concisi per realizzare il mio scopo? Se joomla non fornisce tale funzionalità, è un inconveniente significativo per la velocità di caricamento della pagina.

Voglio anche aggiungere fogli di stile personalizzati da un modulo in modo che vengano iniettati nella pagina una sola volta anche se lo stesso modulo lo aggiunge più volte in quella pagina -

<style type="text/css"> .classname { color:red; }.....</style>

Come posso raggiungere questo obiettivo?

9
dev-m

JDocument-> addScript () ha opzioni per rinviare il caricamento dello script e/o caricarlo in modo asincrono. Vedi il documento API: http://api.joomla.org/cms-3/classes/JDocumentHTML.html#method_addScript

Ciò consentirà al browser di caricare gli script più avanti nel processo, il che aiuterà con il tempo di caricamento.

Non esiste un'API per caricare gli script nella parte inferiore della pagina. Se ne hai bisogno, devi utilizzare estensioni di terze parti o aggiungerlo direttamente al modello.

6
Bakual

Non esiste un metodo per aggiungere subito uno script al piè di pagina. Tuttavia, potresti creare un plug-in che ottenga l'output, cerchi un tag con un nome appropriato, come footer e usi str_replace per aggiungere il tuo codice.

Ma puoi usare queste estensioni per ottenere ciò:

  1. ScriptsDown
  2. Ottimizzazione JCH

Inoltre ho trovato un metodo. Preferisco non hackerare il codice di base, ma al momento è il massimo che posso inventare.

controlla questo link - i file Javascript sono inclusi nel piè di pagina

Spero che possa aiutare gli altri :)

2
Joomler

Ormai penso che non ci sia alcuna opzione per caricare script nella parte inferiore della pagina.

Per la tua seconda domanda, potresti usare una proprietà booleana statica e impostarla su true al primo rendering del tuo CSS. Per le seguenti istanze del modulo è sufficiente testare questa proprietà per decidere se è necessario aggiungere il proprio CSS o meno.

Forse un buon posto per aggiungere questa proprietà statica è una classe helper del modulo.

Saluti,

2
Pep Lainez

Utilizziamo un modulo chiamato "Modulo vuoto", che consente di inserire qualsiasi script (PHP, Java, CSS, HTML, qualunque cosa) e scegliere dove caricarlo (head, body, end of body, ecc.).

È gratuito e l'ho trovato assolutamente utile: http://extensions.joomla.org/extensions/core-enhancements/coding-a-scripts-integration/custom-code-in-modules/3668

Per spostare gli script da sotto a il corpo è un po 'più di lavoro. Usa questo:

Includi nel modello:

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

Aggiungi una riga "non impostata" per ogni script che devi rimuovere dalla testa. Quindi aggiungilo al modulo vuoto caricandolo in basso (posizione di debug?). Un vantaggio, se si creano diversi moduli vuoti, è che è possibile caricare gli script solo dove necessario (come un'istanza del modulo solo per motools, caricandola solo su una pagina specifica).

Per gli stili, puoi anche usare il Modulo vuoto.

Spero che aiuti.

$ document-> addScript () aggiunge sempre gli script nella sezione dell'intestazione prima del tag. Quindi, se vuoi caricare un file di script nella parte inferiore della pagina, allora dovresti includere js in quel file semplicemente usando <script src="{pathtojacvascriptfile}"></script>

Spero che questo possa aiutare

2
user5491

Non ho ancora provato da solo. È possibile creare un modulo che non visualizza HTML, stampa solo script e stili, ma nella posizione inferiore del modulo nelle pagine in cui è visualizzato l'altro modulo.

0
Hung Tran