Używam JHtml::script
do dodawania skryptów do moich stron w niestandardowym module. Jednak te skrypty są wstrzykiwane do głowy, zanim J3 doda w jQuery - na przykład:
<!-- my module js -->
<script src="/modules/mod_tiles/js/jquery.isotope.min.js" type="text/javascript"></script>
<script src="/modules/mod_tiles/js/jquery.hoverintent.min.js" type="text/javascript"></script>
<script src="/modules/mod_tiles/js/mod_tiles.js" type="text/javascript"></script>
<!-- then joomla loads jQuery --->
<script src="/media/jui/js/jquery-noconflict.js" type="text/javascript"></script>
<script src="/media/jui/js/jquery.min.js" type="text/javascript"></script>
Jak zmusić Joomla do ładowania jQuery przed innymi skryptami?
joomla-3.x
jquery
kodowania
źródło
źródło
mod_tiles.php
tym wymuszonym pierwszym ładowaniu jQuery. Dziękuję Ci!jeśli poprawnie odczytam twoje pytanie, rozwijasz swój własny moduł.
Spróbuj tego w default.php - widok modułu (w „tmpl”):
JHtml::stylesheet('modules/'.$module->module.'/assets/css/yourfile.css');
JHtml::script('modules/'.$module->module.'/assets/js/yourscript.js');
Albo to :
JHtml::_('stylesheet', 'modules/'.$module->module.'/assets/css/anotherfile.css');
JHtml::_('script', 'modules/'.$module->module.'/assets/js/othercript.js');
W obu przypadkach pliki JS powinny zostać wstrzyknięte po jQuery, pod warunkiem, że utworzono folder „zasób” oraz folder „css” i „js”.
Drugie rozwiązanie jest bardziej zgodne z API Joomla 3.XX.
Mam nadzieję, że to pomoże.
źródło
assets
folderu - nie inaczej, a skrypty nadal ładują się, zanim zrobi to jQuery. Zastanawiam się również nad mądrością umieszczania tego rodzaju kodu w pliku szablonu (szczególnie jeśli istnieje wiele szablonów korzystających z tych samych skryptów, DRY itp.)default.php
wtmpl
(szablonu) folderu modułu. Myślałem, że skrypty powinny być ładowane wmod_tiles.php
(„kontroler”) zamiastdefault.php
(widok).Wpadłem na ten problem w zeszłym tygodniu i był on związany z tym, gdzie wywoływałem JHtml :: script. Czy robisz to w swoim widoku lub szablonie widoku? Jeśli spróbujesz dodać skrypty do samego widoku (views / yourview / view.html.php), zostaną one wstawione przed własnymi skryptami Joomla !, ale jeśli dodasz skrypty do szablonu (views / yourview / tmpl / default.php) zostaną wstawione po skryptach Joomla!
Powodzenia!
źródło
tmpl
. Próbowałem dodać skrypty zarówno w mod_tiles.php, jak i default.php - oba ładują się przed jQuery.Wynika to prawdopodobnie z metody, którą programista
mod_tiles
zastosował do zaimportowania skryptów. Zakładam, że w tej sytuacji nie trzymali się standardów kodowania Joomla.Masz 2 opcje (o których mogę myśleć):
JHtml
.Mam nadzieję że to pomoże
źródło
Chciałem dodać moje dwa bity po fakcie. Mam kilka skryptów i arkuszy stylów, które należy załadować dla każdego widoku, który mamy w komponencie, i chciałem, żeby to miało miejsce, zapewniając, że zostaną załadowane we właściwej kolejności.
W pliku
components\myComponent\mycomponent.php
:źródło
Wiem, że to stary temat, ale czy kiedykolwiek doszedłeś do sedna? Właśnie spotkałem ten sam problem. Zidentyfikowałem przyczynę, ale nie problem / rozwiązanie; Mam podstępne podejrzenie, że to BŁĄD, ale mógłbym to zrobić z kimś innym, kto to wypróbuje.
Scenariusz: Utworzyłeś moduł zawierający skrypt zależny od jQuery, więc w widoku default.php używasz następujących elementów:
Następnie zainstaluj moduł i nadaj mu pozycję modułu, powiedzmy „w lewo”. Gdy spojrzysz na kod źródłowy interfejsu, wszystko wygląda dobrze, wszystkie skrypty ładują się po skryptach, które są w nim zawarte
JEDNAK jeśli nadasz modułowi „akordeon” i użyjesz funkcji loadposition joomla, aby dodać moduł do artykułu
następnie akordeon.js zostanie dodany PRZED plikami bootstrap.framework.
Jedynym sposobem, w jaki udało mi się go zatrzymać, jest dodanie skryptu jako skryptu wbudowanego, a nie włączenie go do głowy.
EDYCJA: to samo dotyczy css; jest dodawany na początku listy deklaracji css (przed szablonem i plikami css bootstrap). Zaletą tego jest dodanie! Ważne do deklaracji css.
źródło