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


9

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?


1
Dovresti mantenere la tua domanda su un argomento. Hai due domande qui.
Bakual,

1
c'è un'estensione che potrebbe aiutare: extensions.joomla.org/extension/scriptsdown
noiragneau

Risposte:


6

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.


Sì, lo sapevo, ma wordpress ha questo tipo di funzionalità riguardanti le mie domande in caso sia di script che di css personalizzati, quindi Joomla dovrebbe aggiungerlo.
dev-m,

Ci sono state discussioni per aggiungere qualcosa del genere. Personalmente non vedo il vantaggio di aggiungerlo in fondo rispetto al differimento / asincrono.
Bakual,

2

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

$ 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

Non esiste un metodo per aggiungere subito uno script al piè di pagina. Tuttavia, è possibile creare un plug-in che ottenga l'output, cerchi un tag con un nome appropriato, come piè di pagina e utilizzare str_replace per aggiungere il proprio 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

Usiamo 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 dal basso al di sotto del 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 questo possa essere d'aiuto.


0

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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.