Dodawanie pliku javascript w stopce i niestandardowych stylach

9

Aby szybko załadować stronę, muszę wstawić JS na końcu strony z komponentów i modułów.

Poniższy sposób deklarowania skryptów nie działa, aby wstawić go na dole, ponieważ nie ma parametru do umieszczenia go w stopce.

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

Jakie są zatem zwięzłe sposoby realizacji mojego celu? Jeśli joomla nie zapewnia takiej funkcjonalności, oznacza to znaczną wadę szybkości ładowania strony.

Chcę również dodać niestandardowe arkusze stylów z modułu, aby były wstrzykiwane na stronę tylko raz, nawet jeśli ten sam moduł dodaje go wiele razy na tej stronie -

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

Jak mogę to osiągnąć?

dev-m
źródło
1
Powinieneś zachować swoje pytanie do jednego tematu. Masz tutaj dwa pytania.
Bakual
1
istnieje rozszerzenie, które może pomóc: extensions.joomla.org/extension/scriptsdown
noiragneau

Odpowiedzi:

6

JDocument-> addScript () ma opcje odroczenia ładowania skryptu i / lub załadowania go asynchronicznie. Zobacz dokument API: http://api.joomla.org/cms-3/classes/JDocumentHTML.html#method_addScript

Umożliwi to przeglądarce załadowanie skryptów na późniejszym etapie procesu, co pomoże w czasie ładowania strony.

Brak interfejsu API do ładowania skryptów na dole strony. Jeśli potrzebujesz, musisz użyć rozszerzeń innych firm lub dodać je bezpośrednio do szablonu.

Bakual
źródło
Tak, zdawałem sobie z tego sprawę, ale wordpress ma tego rodzaju funkcje dotyczące moich pytań w przypadku skryptów i niestandardowych plików CSS, więc Joomla powinien to dodać.
dev-m
Były dyskusje, aby dodać coś takiego. Osobiście nie widzę korzyści z dodania go na dole nad odroczeniem / asynchronizacją.
Bakual
2

Do tej pory myślę, że nie ma opcji ładowania skryptów na dole strony.

W przypadku drugiego pytania możesz użyć statycznej właściwości boolean i ustawić ją na wartość true przy pierwszym renderowaniu css. W przypadku następujących instancji modułu wystarczy przetestować tę właściwość, aby zdecydować, czy należy dodać css, czy nie.

Być może dobrym miejscem do dodania tej właściwości statycznej jest klasa pomocnicza modułu.

Pozdrowienia,

Pep Lainez
źródło
2

$ document-> addScript () zawsze dodaje skrypty w sekcji nagłówka przed tagiem. Tak więc, jeśli chcesz załadować plik skryptu na dole strony, musisz dołączyć plik js do tego pliku, po prostu używając<script src="{pathtojacvascriptfile}"></script>

Mam nadzieję, że to może pomóc


źródło
2

Obecnie nie ma metody dodania skryptu do stopki. Jednak możesz stworzyć wtyczkę, która pobiera dane wyjściowe, wyszukuje odpowiednio nazwany tag, na przykład stopkę i używa str_replace, aby dodać kod.

Ale możesz użyć tych rozszerzeń, aby to osiągnąć:

  1. ScriptsDown
  2. JCH Optimize

Znalazłem też jedną metodę. Wolę nie rąbać kodu podstawowego, ale to najlepsze, co mogę teraz wymyślić.

sprawdź ten link - pliki JavaScript znajdują się w stopce

Mam nadzieję, że pomoże innym :)

Joomler
źródło
2

Używamy modułu o nazwie „Pusty moduł”, który pozwala umieścić dowolny skrypt (PHP, Java, CSS, HTML, cokolwiek) i wybrać, gdzie go załadować (głowa, treść, koniec treści itp.).

Jest darmowy i uważam, że jest całkowicie przydatny: http://extensions.joomla.org/extensions/core-enhancements/coding-a-scripts-integration/custom-code-in-modules/3668

Przeniesienie skryptów z ciała na ciało jest nieco więcej pracy. Użyj tego:

Uwzględnij w szablonie:

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

Dodaj jedną „nieuzbrojoną” linię dla każdego skryptu, który chcesz usunąć z głowy. Następnie dodaj go do pustego modułu ładującego na dole (pozycja debugowania?). Jedną zaletą jest to, że jeśli tworzysz różne puste moduły, możesz ładować skrypty tylko tam, gdzie jest to potrzebne (np. Instancja modułu tylko dla motools, ładując go tylko na określonej stronie).

W przypadku stylów można również użyć pustego modułu.

Mam nadzieję, że to pomoże.

Jonathan Roza - Zott Online Ag
źródło
0

Sam jeszcze nie próbowałem. Możesz zbudować moduł, który nie wyświetla HTML, tylko drukuje skrypty i style, ale znajduje się w dolnej pozycji modułu na stronach, na których wyświetla się twój drugi moduł.

Hung Tran
źródło