it-swarm-id.com

Jhtml :: skrip pesanan - cara menunda hingga jQuery dimuat?

Saya menggunakan JHtml::script untuk menambahkan skrip ke halaman saya dalam modul yang dikembangkan khusus. Namun, skrip ini disuntikkan ke kepala sebelum J3 menambahkan di jQuery - misalnya:

<!-- 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>

Bagaimana saya bisa memaksa Joomla untuk memuat jQuery sebelum skrip lain?

11
codinghands

Anda harus menelepon

JHtml::_('jquery.framework');

sebelum skrip JHtml :: lainnya. AFAIK ini memastikan bahwa jQuery dimuat terlebih dahulu.

15
fruppel

jika saya membaca pertanyaan Anda dengan benar, Anda sedang mengembangkan modul Anda sendiri.

Coba ini, di default.php - tampilan modul (dalam "tmpl"):

JHtml::stylesheet('modules/'.$module->module.'/assets/css/yourfile.css');

JHtml::script('modules/'.$module->module.'/assets/js/yourscript.js');

Atau ini :

JHtml::_('stylesheet', 'modules/'.$module->module.'/assets/css/anotherfile.css');

JHtml::_('script', 'modules/'.$module->module.'/assets/js/othercript.js');

Dalam kedua kasus, file JS Anda harus disuntikkan setelah jQuery, asalkan Anda membuat folder "aset", dan folder "css" dan "js" di dalamnya.

Solusi kedua lebih sesuai dengan joomla 3.X.X API.

Semoga ini bisa membantu.

2
ghazal

Saya mengalami masalah ini minggu lalu dan itu terkait dengan tempat saya memanggil JHtml :: script. Apakah Anda melakukan ini dalam tampilan Anda atau template tampilan? Jika Anda mencoba untuk menambahkan skrip dalam tampilan itu sendiri (views/yourview/view.html.php) mereka akan dimasukkan sebelum skrip Joomla sendiri, tetapi jika Anda menambahkan skrip dalam template (views/yourview/tmpl/default.php) mereka akan dimasukkan setelah skrip Joomla !.

Semoga berhasil!

2
Zachary Draper

Saya ingin menambahkan dua-bit saya setelah fakta. Saya punya beberapa skrip dan style sheet yang perlu dimuat untuk setiap tampilan yang kita miliki dalam komponen, dan ingin satu titik agar itu terjadi memastikan juga bahwa mereka dimuat dalam urutan yang benar.

Dalam file components\myComponent\mycomponent.php:

defined('_JEXEC') or die;

// Include dependancies
jimport('joomla.application.component.controller');

JHtml::stylesheet('http://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css', array(), true);
JHtml::stylesheet('components/com_mycomponent/assets/css/mycomponent.css');

JHtml::_('jquery.framework');   // Make sure jQuery is loaded before component JS
JHtml::script( 'components/mycomponent/assets/js/jquery.cookie.js');

// Execute the task.
$controller = JControllerLegacy::getInstance('Mycomponent');
$controller->execute(JFactory::getApplication()->input->get('task'));
$controller->redirect();
0
GDP

Ini mungkin karena metode yang pengembang mod_tiles telah digunakan untuk mengimpor skrip. Saya berasumsi mereka tidak terjebak dengan standar pengkodean Joomla dalam situasi ini.

Anda memiliki 2 opsi (yang dapat saya pikirkan) hwre:

  1. Jika skrip diimpor dari file dalam folder tmpl di dalam modul, Anda dapat melakukan Template Override dan mengubah cara skrip diimpor, menggunakan JHtml.
  2. Anda dapat mengunduh dan menginstal jQuery Easy yang merupakan plugin yang mengimpor jQuery dan menempatkannya di atas semua skrip lainnya.

Semoga ini membantu

0
Lodder