2012-01-24 14 views
0

私たちは特別な注意が必要なページがいくつかあります。jquery-uiは、何らかの形で記事の頭の部分に追加される外部スクリプトから呼び出されます。Joomla!記事の頭部にスクリプトを追加

私はjumiで試したことがありますが、これは最良の選択ではありません(PHPの代わりにjsをHTML本体でレンダリングすることを含む).JavaScriptファイルを追加する唯一の方法は、PHPファイルこれはエコーをエコーし​​ますが、想像するように、これはパフォーマンスの面でエレガントで効率的ではありません。

別の試みであったが、スクリプトをエコーの代わりに、私が使用して試してみた:

<?php 
    $document = &JFactory::getDocument(); 
    $document->addScript("path/to/jsfile.js"); 
?> 

が、私が期待してきたように、それは動作しませんでした、joomlaのは、この前に、ヘッド部を作成しているようですPHPスクリプトは実行される可能性があります。

私は簡単なヘッダーを付けましたが、すべての記事にファイルが含まれているようですが、それは帯域幅とJavaScriptの問題の可能性がかなり大きいためです道路。

私はjoomlaに新しいので、いくつかの柔軟性を提供するものは答えとして良いです。

不明な点がある場合は、できる限りお答えください。

私はjoomla 1.7とphp5を使用しています。

+0

addScript()メソッドはどこにありますか?記事の中に?その記事のみにjqueryをロードしますか?テンプレートに手書きしてみましたが、条件付きでのみロードしましたか? –

+0

addscriptはjumiで使用されているphpファイルで呼び出されますが、記事にjavascriptを追加していませんか? – ComputerSaysNo

答えて

4

JumiはonAfterRenderイベント(2.0.6プラグインを見ている)を使用しています - この時点で私は<ヘッド>タグがすでに書き込まれている、で、実際に文書全体がすでにレンダリングされると思います。

文書の本文を取得してから、終了タグ</head >を探して、その前にスクリプトリンクを挿入してみてください。このような何か:

$myJS = "<script type='text/javascript' src='http://mysever.com/my.js'>" 
$content = JResponse::getBody(); // gets the html in it's ready to send to browser form 
$hdPos = strpos($content, '</head>'); 
$hdPos += 7; //move position to include the <head> tag 
$bodyLen = strlen($content); 
$content = substr($content, 0, $hdPos) . $myJS . substr($content, $hdPos, $bodyLen); 
JResponse::setBody($content); 

NB:これはテストされていないと私は、これらの日Jumiを使用していないが、それは近いはずです。

+0

+1あなたの答えをありがとう、私はテストし、私の問題をある程度修正した場合はそれを答えとして受け入れます。 – ComputerSaysNo

+0

私は解説で取り除かれたタグとJSの例の引用符を修正しました。 – Craig

+0

何かが正常に動作していない、スクリプトがヘッドセクションに接続されていない...):コンテンツのほとんどがすでにストリームされている可能性がありますか? – ComputerSaysNo

1

これをすべて実行する必要はありませんでした。 拡張機能 - >テンプレートマネージャー - >テンプレートタブ(デフォルトでは「スタイル」) - >テンプレートに移動し、「HTML編集」をクリックします。ヘッダーに直接コードを追加すると、すべてのページにコードが読み込まれます。

もう少し洗練された方法は、ヘッダーに必要な機能を定義し、必要な特定の記事の本文から呼び出すことです。

+0

+1ありがとうございます(: – ComputerSaysNo

関連する問題