web-dev-qa-db-ja.com

Jhtml :: script順序-jQueryがロードされるまで延期する方法?

私が使う JHtml::scriptカスタム開発モジュールのページにスクリプトを追加します。ただし、これらのスクリプトは、J3がjQueryに追加する前にヘッドに挿入されます。次に例を示します。

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

Joomlaが他のスクリプトの前にjQueryを強制的にロードする方法を教えてください。

11
codinghands

あなたは電話する必要があります

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

他のJHtml :: scriptの前。これは、jQueryが最初にロードされることを確認します。

15
fruppel

私があなたの質問を正しく読んだら、あなたはあなた自身のモジュールを開発しています。

Default.phpでこれを試してください-モジュールのビュー( "tmpl"内):

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

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

またはこれ:

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

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

どちらの場合も、「asset」フォルダー、および「css」と「js」フォルダーを内部に作成した場合、JSファイルはjQueryの後に挿入する必要があります。

2番目のソリューションは、joomla 3.X.X APIに準拠しています。

それが役に立てば幸い。

2
ghazal

先週この問題に遭遇しましたが、これはJHtml :: scriptを呼び出す場所に関係していました。ビューまたはビューのテンプレートでこれを行っていますか?スクリプトをビュー自体に追加しようとすると(views/yourview/view.html.php)、Joomla!の独自のスクリプトの前に挿入されますが、テンプレートにスクリプトを追加すると(views/yourview/tmpl/default.php)Joomla!のスクリプトの後に挿入されます。

幸運を!

2
Zachary Draper

事後、2ビット追加したかった。コンポーネントにあるすべてのビューに対してロードする必要があるスクリプトとスタイルシートがいくつかあり、それらが正しい順序でロードされることを保証するために、単一のポイントでそれが発生することを望んでいました。

ファイル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

これは、mod_tilesの開発者がスクリプトのインポートに使用した方法が原因である可能性があります。この状況では、彼らはJoomlaコーディング標準に固執していないと思います。

あなたには2つのオプションがあります(私が考えることができます)hwre:

  1. スクリプトがモジュール内のtmplフォルダー内のファイルからインポートされている場合は、 Template Override を実行して、スクリプトの方法を変更できますJHtmlを使用してインポートされました。
  2. ダウンロードしてインストールできます jQuery Easy これは、jQueryをインポートして他のすべてのスクリプトの上に配置するプラグインです。

お役に立てれば

0
Lodder