私はこの質問が再度尋ねられることを知っています、しかし私は彼らの解決策を試みました、そしてそれは働かないのでそれを評価しないでください。タグの前に配置する必要がある認証スクリプト(auth.js)がありますが、トピックで提供されているソリューションを適用した場合でも、ボディファイルではなくヘッダーファイルに追加されます。これが既存のコードです。私はGantry5を使用しています:
$document=JFactory::getDocument();
$document->addScript('/templates/rt_kraken/js/auth.js', 'text/javascript',false,true);
私はまだ初心者なので、ここにはコメントする評判がまだないので、徹底的に説明してください。
これも前の投稿のリンクです。私はそれらとまったく同じことを達成しようとしています: </ body>終了タグの前にJavaScriptスクリプトをロードする
ガントリー5の場合、拡張機能>テンプレート>スタイル>ページ設定
次に、たとえば私に必要なスクリプトを入力します。
<script type="text/javascript" src="/templates/rt_kraken/js/auth.js"></script>
@jamesgarrettさん、ありがとうございました。私は間違いなくより高度なトピックであなたのアプローチを適用します。
少なくとも4つの選択肢があると思います。
プラグインは、プラグインが注文された順序で実行されるため、別のプラグインが同じ手法を使用している場合は、プラグインの後にコードが挿入されることがあります。また、システムページキャッシュを使用している場合は、HTMLがキャッシュされる前にスクリプトが挿入されるように、プラグインをその前に置く必要があります。うまくいけば、どちらも意味があり、あなたの状況には当てはまりません。
適切なシステムプラグインのphpコードは、たとえば次のようになります。 /plugins/system/scriptbeforebody/scriptbeforebody.php
<?php
defined('_JEXEC') or die('Restricted access');
class plgSystemScriptbeforebody extends JPlugin {
public function onAfterRender()
{
$app = JFactory::getApplication();
// only insert the script in the frontend
if ($app->isClient('site')) {
// retrieve all the response as an html string
$html = $app->getBody();
// replace the closing body tag with your scripts appending to the closing body tag
$scripts = [
'/templates/rt_kraken/js/auth.js',
'/templates/rt_kraken/js/something-else.js',
];
$tags = "";
foreach($scripts as $s){
$tags .= '<script src="' . $s . '"></script>';
}
$html = str_replace('</body>',$tags . '</body>',$html);
// override the original response
$app->setBody($html);
}
}
}
付随するマニフェストは、たとえば次のようになります。 /plugins/system/scriptbeforebody/scriptbeforebody.php
<?xml version="1.0" encoding="utf-8"?>
<extension version="3.8" type="plugin" group="system">
<name>Script Before Closing Body Tag</name>
<creationDate>Dec 2017</creationDate>
<version>1.0</version>
<description>Hardcoded insertion of script tag into html response</description>
<files>
<filename plugin="scriptbeforebody">scriptbeforebody.php</filename>
</files>
</extension>
両方のファイルをZipでインストールし、通常のjoomla拡張インストーラーを使用するか、指定したパスにアップロードして、アドミニストレーション>エクステンション>管理>検出ツールを使用してインストールします。
新しいカスタムHTMLモジュールを作成し、コードエディターを使用してテキストを追加できます。
<script src="/templates/rt_kraken/js/auth.js"></script>
次に、それをモジュールの位置に置き、タイトルを無効にします。コードは、モジュールが表示される位置に配置されます。一部のテンプレートには、Googleアナリティクスなどの非コンテンツデータ用に予約された位置があるため、このモジュールに適しています。
1つ(または複数)の記事のみのスクリプトが必要で、Gantry5 Frameworkを使用している場合は、コンポーネント、アウトラインに移動し、デフォルトのアウトラインを使用して新しいアウトラインを作成し、ページ設定に移動し、ボディ属性にJavaScriptを追加します。 「前」ウィンドウで、アサインメントの新しいアウトラインを記事に割り当てました。