web-dev-qa-db-ja.com

プラグイン開発-解析エラー:構文エラー、予期しない 's'(T_STRING)

私はJoomlaの最初のプラグインを開発しているところです。これは、本体を閉じる直前にJavaScriptを配置する単純なプラグインです。 JavaScriptをテンプレートのindex.phpに直接配置すると、JavaScriptは正常に機能するため、jsに自信があります。しかし、私のプラグインはエラーをスローしています

Parse error: syntax error, unexpected 's' (T_STRING) in C:\xampp\blah\blah\plugins\system\reftagger\reftagger.php on line 50

私は、49行目(g.srcを追加する場所)で二重引用符を使用することに関係していると思います。以下のスニペットは、二重引用符を含む、イムが追加しようとしているスクリプトを示しています

 $ReftaggerOut = "
            <script type='text/javascript'>
                var refTagger = {
                    settings: {
                        bibleVersion: ".$BibleTranslation."            
                    }
                };
                (function(d, t) {
                    var g = d.createElement(t), s = d.getElementsByTagName(t)[0];
                    g.src = "//api.reftagger.com/v2/RefTagger.js";
                    s.parentNode.insertBefore(g, s);
                }(document, "script"));

            </script>

    ";      

私が試みました

  1. g.srcを単一のブラケットに変更するには
  2. g.srcの/ "にします
2
rowanwins

スクリプト/文字列内の二重引用符です。これを試して:

<?php
$ReftaggerOut = "
    <script type='text/javascript'>
        var refTagger = {
            settings: {
            bibleVersion: ".$BibleTranslation."            
            }
        };
        (function(d, t) {
            var g = d.createElement(t), s = d.getElementsByTagName(t)[0];
            g.src = '//api.reftagger.com/v2/RefTagger.js';
            s.parentNode.insertBefore(g, s);
        }(document, 'script'));
    </script>
";
?>

または、二重引用符が必要な場合は、次のようにエスケープします。

$ReftaggerOut = "
    <script type='text/javascript'>
        var refTagger = {
            settings: {
            bibleVersion: ".$BibleTranslation."            
            }
        };
        (function(d, t) {
            var g = d.createElement(t), s = d.getElementsByTagName(t)[0];
            g.src = \"//api.reftagger.com/v2/RefTagger.js\";
            s.parentNode.insertBefore(g, s);
        }(document, \"script\"));
    </script>
";
4
GDP

構文エラーの問題は解決したと思いますが、この問題を解決する正しい方法は、PHPを使用してJavaScriptを挿入しないことです。

あなたがしなければならないことは:

1)media/plg_yourplugin/js/your-js-file.jsにJavaScriptファイルを作成します

2)PHP JHTMLライブラリAPIを使用して、javascriptファイルをindex.php領域に追加します。

これを正しく行う方法に関する@Michaelのブログ投稿は次のとおりです。 http://www.babdev.com/blog/139-use-the-media-folder-allow-overridable-media

3
Chad Windnagle

PHP解析エラーがあります。

文字列が"で始まり、"で終わる場合。すべての内部"\"でなければなりません。

0
Anibal