11

私は Joomla 開発者になって、ほぼ 1 年になります。毎日 jQuery を joomla にインポートするのに苦労しています。Joomla には mootools が付属しています。jQuery をインポートするとクラッシュします。また、モジュールを作成するときに、各モジュールに jQuery をインポートする必要があるため、サイトが遅くなります。サイト全体がクラッシュすることもあります。mootools と jquery の両方を連携させて、クラッシュすることなく両方を使用できるようにしたいと考えています。

jQuery を Joomla にインポートする最良の方法は何ですか? 1 つの jquery ライブラリをサイト全体 (バックエンドとフロントエンドの両方)で使用するためにインポートを行う必要がある特定の場所はありますか?

ありがとう

4

4 に答える 4

18

これは、jQuery のコピーが 1 つだけインポートされるようにするために使用するコードです。jQueryがすでにインポートされているかどうかを確認するだけで、インポートされていない場合はインポートします:)

ジュムラ 2.5

<?php
  $app = JFactory::getApplication();
  if (!$app->get('jquery'))
  {
     $app->set('jquery', true);
     JFactory::getDocument()->addScript(JUri::root() . 'templates/template_name/js/jquery.js');
  }
?>

Joomla 3.x (競合モードなし):

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

Joomla 3.x (通常モード):

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

このコードをテンプレートのindex.phpに挿入する必要があります。できれば一番上の近くに挿入して、どこにあるか覚えておく必要があります。テンプレートのindex.phpファイルを上書きしたくない場合は、小さなプラグインを開発することもできます

アップデート:

ボビーが言ったように。多くの拡張機能には独自の jQuery のコピーが含まれていますが、多くの拡張機能はこのメソッドを使用しないため、競合が発生します。私が知っているのは、優れた開発者は、複数の jQuery ライブラリが競合を引き起こし、このコードを使用する必要があることを知っておく必要があるということだけです。

于 2012-09-18T09:16:46.150 に答える
2

これは素晴らしいプラグインです。

http://extensions.joomla.org/extensions/core-enhancements/performance/jquery-scripts/18327

このプラグインは、Mootools ライブラリと一緒に jQuery のインスタンスを使用する際のフロントエンドとバックエンドの問題をクリーンアップして解決するのに役立ちます。

すぐに使える機能

  • Google CDN から jQuery および jQuery UI ライブラリを呼び出します (プロトコルの有無にかかわらず) - ただし、ローカルでも実行できます。
  • 完全な互換性のために MooTools 呼び出しの後に jQuery ライブラリを配置します。
  • jQuery ライブラリ呼び出しの横に noConflict() コードを追加し、
  • 他のモジュールまたはプラグインによって追加された noConflict() 呼び出しを含む、余分な jQuery および jQuery UI ライブラリを取り除きます。
  • jQuery UI の基本的なスタイリングまたはカスタム テーマを選択できます。

微調整できること

  • フロントエンドで MooTools ライブラリを一時的に無効にします。
  • テンプレートから単一ページまで、サイトの特定の部分でプラグインを有効または無効にします。
  • レポーティングを使用して、プラグイン エンジンが実行したことに関するフィードバックを取得します。
  • スクリプトとスタイルシートを追加または削除します。
  • ページに加えられた変更によって残された空白行を取り除きます。
  • 一部のライブラリが削除されるのを防ぎます。
  • エンジンがデフォルトで動作する方法を変更します (noConflict() コードを追加または削除しないでください...)、
于 2013-08-13T15:31:20.397 に答える
0

Joomla 3.x では、JApplication は JObject から拡張されなくなりました。つまり、Joomla 2.5 と Joomla 3.x の拡張機能で同じコードを使用する場合は、if 条件を次のように記述する必要があります。

if (!version_compare(JVERSION, '3', 'ge') && !JFactory::getApplication()->get('jquery', false)) {

そうしないとクラッシュします!! 例はここにあります https://github.com/Digital-Peak/DPExtensions/blob/master/mod_dpslider/tmpl/default.php#L13

于 2013-07-09T19:00:15.907 に答える
0

Joomlaを使用してください!3.0 — 長い間試してきたのなら、Joomla を手伝うべきです! これに対処するために作成されたJavaScript ワーキング グループ。

于 2012-09-18T06:33:14.420 に答える