it-swarm-vi.com

Jhtml :: thứ tự tập lệnh - làm thế nào để hoãn lại cho đến khi jQuery được tải?

Tôi sử dụng JHtml::script để thêm tập lệnh vào các trang của tôi trong mô-đun được phát triển tùy chỉnh. Tuy nhiên, các tập lệnh này được đưa vào đầu trước khi J3 thêm vào jQuery - ví dụ:

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

Làm cách nào tôi có thể buộc Joomla tải jQuery trước bất kỳ tập lệnh nào khác?

11
codinghands

Bạn nên gọi

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

trước tập lệnh JHtml :: khác của bạn. AFAIK điều này đảm bảo rằng jQuery được tải trước tiên.

15
fruppel

nếu tôi đọc chính xác câu hỏi của bạn, bạn đang phát triển mô-đun của riêng bạn.

Hãy thử điều này, trong default.php - chế độ xem mô-đun (trong "tmpl"):

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

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

Hoặc này:

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

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

Trong cả hai trường hợp, (các) tệp JS của bạn nên được chèn sau jQuery, miễn là bạn đã tạo thư mục "nội dung" và thư mục "css" và "js" bên trong.

Giải pháp thứ hai phù hợp hơn với API jX 3.X.X.

Hy vọng nó giúp.

2
ghazal

Tôi đã gặp vấn đề này vào tuần trước và nó có liên quan đến nơi tôi đang gọi JHtml :: script. Bạn đang làm điều này trong chế độ xem của bạn hoặc mẫu của chế độ xem? Nếu bạn cố gắng thêm các tập lệnh trong chế độ xem (lượt xem/yourview/view.html.php), chúng sẽ được chèn trước tập lệnh riêng của Joomla, nhưng nếu bạn thêm tập lệnh trong mẫu (lượt xem/yourview/tmpl/default.php) chúng sẽ được chèn sau tập lệnh của Joomla.

Chúc may mắn!

2
Zachary Draper

Tôi muốn thêm hai bit của tôi sau khi thực tế. Tôi đã có một vài tập lệnh và biểu định kiểu cần được tải cho mọi chế độ xem mà chúng tôi có trong thành phần và muốn một điểm duy nhất xảy ra để đảm bảo rằng chúng được tải theo đúng trình tự.

Trong tập tin 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

Điều này có lẽ là do phương thức mà nhà phát triển của mod_tiles đã được sử dụng để nhập các tập lệnh. Tôi cho rằng họ đã không bị mắc kẹt với các tiêu chuẩn mã hóa Joomla trong tình huống này.

Bạn có 2 tùy chọn (mà tôi có thể nghĩ ra) hwre:

  1. Nếu các tập lệnh đang được nhập từ một tệp trong thư mục tmpl trong mô-đun, bạn có thể thực hiện Ghi đè mẫ và thay đổi cách tập lệnh đang được nhập, sử dụng JHtml.
  2. Bạn có thể tải xuống và cài đặt jQuery Easy là plugin nhập jQuery và đặt nó lên trên tất cả các tập lệnh khác.

Hi vọng điêu nay co ich

0
Lodder