2013-05-23 8 views
8

私はこれ以外のすべてを取り除くことができた私のカスタムJoomlaのテンプレートのヘッダー、から不要なスクリプトを削除しようとしている:Joomla 3.X - ヘッダーからツールチップスクリプトを削除しますか?

<script type="text/javascript"> 
jQuery(document).ready(function() 
       { 
        jQuery('.hasTooltip').tooltip({}); 
       }); 
    </script> 

私は時間を探してきたと私は、多くのものを試してみましたそれを取り除くことができますが、私はそれを取り除くことはできません。ここで私は(この問題を持っている誰のために)私はしたくない他のスクリプトを削除するために何をやったかです:

# unset frameworks 
JHtml::_('bootstrap.framework',false); 
JHtml::_('jquery.framework',false); 

# unset scripts 
unset($doc->_scripts[$this->baseurl.'/media/jui/js/jquery.min.js']); 
unset($doc->_scripts[$this->baseurl.'/media/jui/js/jquery-noconflict.js']); 
unset($doc->_scripts[$this->baseurl.'/media/jui/js/bootstrap.min.js']); 

誰かが私にはそのツールチップのJavaScriptを除去するのに役立つことができれば、それは素晴らしいだろう。ああ、私はコアファイルに触れたくないので、テンプレートindex.phpファイルからそのファイルを削除しようとしています。

+0

3.4.0でこの問題に対する明確な修正があるように表示されません。 –

答えて

4

一部のコンポーネント/モジュール/プラグインがJHTML :: _( 'behavior.tooltip')関数を呼び出しています。その関数はコードを追加します。

はあなたが行うことができます:

汚いやり方を:\ CMS \ HTML \ bootstrap.phpのライブラリに移動し、メソッドのツールチップでファイルを変更します()。コアファイルであることを忘れないでください。そうすれば、アップグレードによって変更が上書きされる可能性があります。

このコードを追加して削除または変更するコンポーネントを見つけてください。

unset($this->_script['text/javascript']); 

免責事項:

+1

JHtml :: _( 'bootstrap.tooltip'); (その中にはロットがあります)もこのコードを追加します。 –

3

$doc->_scriptを手動で解析する必要があります。 $doc->_scripts配列には別のソースにリンクされているスクリプトが含まれていますが、$doc->_scriptはツールチップのようなスクリプト宣言用です。

+0

私は$ doc - > _ scriptを使ってみましたが、ツールヒントコードを取得しませんでした。配列は空を返します。 – SoulieBaby

+0

JSスニペットが生成されたJHtmlBootstrap :: tooltip()を起点として、スニペットが$ doc - > _ scriptに設定されていることがわかります。なぜあなたは空の配列を取得しているのですが、それは私の目の前にありますが、あなたは正しい場所を見ています。 – Michael

+0

コードを追加する場所を見つけましたが、削除するためにコアをハックしたくありません。また、$ doc - > _スクリプト配列をテンプレートインデックスファイルのヘッダとフッタにエコーしてみましたが、何も得られません。 – SoulieBaby

2

グッドラックは、私は私のテンプレートのindex.phpファイルにこのコードを使用して埋め込まれたJavaScriptを取り除くことに成功し、私はPHPの開発者ではないよ、そう上記のコードを使用しますあなた自身のリスクで:)

1

私はすでにこの問題を抱えています。私はJoomla 3を使用しています。これを行うことで解決できます。 Joomla 3にはJoomlaが付属していますこれが問題を引き起こす可能性があります。 また、<jdoc:include type="head" />以上にjQueryを含めてください。必要な場合はそれを含めることができます。しかし、私はこれをお勧めしません。 希望これは、考慮すべきJoomla documents、2つのことに基づいて

2

を支援します。

a)は、以下のコードでは、あなたが実際にブートストラップとjQueryなどの有効/している:

# unset frameworks 
JHtml::_('bootstrap.framework',false);// including bootstrap! 
JHtml::_('jquery.framework',false);// including jquery! 

ブートストラップが有効になっている場合joomlaは自動的にjqueryを有効にし、joomlaがjqueryを有効にするとjoomlaは自動的にツールチップを有効にします。

これらの機能を呼び出さないでください。 unsetあなたが使用正しくブートストラップとjQueryを削除します:ツールチップのスクリプトがまだ含まれている場合

unset($doc->_scripts[$this->baseurl.'/media/jui/js/jquery.min.js']); 
unset($doc->_scripts[$this->baseurl.'/media/jui/js/jquery-noconflict.js']); 
unset($doc->_scripts[$this->baseurl.'/media/jui/js/bootstrap.min.js']); 
unset($doc->_scripts[$this->baseurl.'/media/jui/js/jquery-migrate.min.js']); 

b)に、それはおそらくどこかに使用されるコンポーネントでJHtml::_('behavior.tooltip');によって挿入されます。

最後に、Joomlaのコアファイルを決して変更しないでください。それは最悪の習慣です。

PS。 $docにインラインスクリプトが含まれていないため、ツールチップスクリプトが挿入されていても、$docにツールチップスクリプトが挿入されていないと言われた方にお勧めします。

3

Webルートindex.php(テンプレートではなく、http://domain.com/index.php)の最後に、$ app-> execute();を置き換えます。あなたはモジュールによって作成されていますEXACT HTMLを使用する必要があります

// Start the output buffer. 
ob_start(); 

// Execute the application. 
$app->execute(); 

// Get buffer 
$buffer = ob_get_clean(); 

// Change HTML 
$buffer = str_replace('<script type="text/javascript">'.chr(10).'jQuery(document).ready(function(){'.chr(10).' jQuery(\'.hasTooltip\').tooltip({"html": true,"container": "body"});'.chr(10).'});'.chr(10).' </script>','',$buffer); 

// Output buffer 
echo($buffer); 

注:次の行。これは私のモジュールが作成しているもので、あなたのものは若干異なるかもしれません。 HTMLを行うことに加え

は次のように書き換えて、あなたも整頓出力は、私もウェブサイト上の著作権の年を変更するようなものを行うためにこれを使用

など、モジュールへのリンクを削除することができます。モジュールの位置において、Iは、「{年}」として現在の年参照し、私は、次の処理を行い、別のstr_replace追加:常に現在の年を示し、

$buffer = str_replace('{year}',date('Y'),$buffer); 

ビンゴ。

...

1

をお楽しみください、私は唯一のHTML5、CSS3および効果のためのいくつかの小さなjQueryのプラグインを使用してJoomlaのテンプレート/サイトを構築したのと同じ問題を抱えていました。私も全く使用しなかったツールチップを表示するために、重いBootstrapを含めることは価値がありませんでした。

Althought Iすでに解除メディア/ JUI/JS/bootstrap.min.js JDocumentからではなく、コード

jQuery(document).ready(function(){ 
    jQuery('.hasTooltip').tooltip({"html": true,"container": "body"}); 
}); 

のこれらの行は、まだライブラリ/ CMS/HTML/bootstrap.phpのことで追加されました。だから私はエラー "関数のヒントが見つかりません"が表示されます。

テンプレートのJSファイルに空の関数を追加して解決しました。

jQuery.fn.tooltip = function (option) { }; 
0

ブートストラップの設定を解除しても、ツールチップ機能スニペットウィッヒは、いずれかのコンポーネントでJHtml::_('behavior.tooltip');どこかで挿入されて削除可能なJoomlaのプラグインがあります。

See here: Disable Bootstrap Plugin

関連する問題