ti-enxame.com

Desenvolvimento de plug-in - erro de análise: erro de sintaxe, 's' inesperados (T_STRING)

Estou tendo uma chance de desenvolver meu primeiro plugin para o Joomla, é apenas um plugin simples que coloca algum javascript antes do fechamento do corpo. O javascript funciona bem se eu colocá-lo diretamente no index.php para o modelo, por isso estou confiante nos js. No entanto, meu plug-in está lançando um erro

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

Eu acho que tem a ver com o uso de aspas duplas na linha 49 (onde está adicionando o g.src), que está jogando coisas fora de sintonia. O trecho abaixo mostra o script que estou tentando adicionar, que inclui aspas duplas

 $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>

    ";      

Eu tentei

  1. alterar o g.src para colchetes simples
  2. faça um/"para o g.src
2
rowanwins

São aspas duplas no script/string. Tente o seguinte:

<?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>
";
?>

Ou, se você quiser aspas duplas, as escapa assim:

$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

Sei que você resolveu o problema de erro de sintaxe, mas o caminho certo para resolver esse problema é não inserir javascript com PHP dessa maneira.

O que você deve fazer é:

1) crie seu arquivo javascript em media/plg_yourplugin/js/your-js-file.js

2) em PHP use a API da biblioteca JHTML para adicionar o arquivo javascript à área index.php.

Aqui está um post de @Michael sobre como fazer isso corretamente: http://www.babdev.com/blog/139-use-the-media-folder-allow-overridable-media

3
Chad Windnagle

Você tem um erro de análise PHP.

Se sua sequência começar com " e termina com ". Tudo interno " devemos ser \".

0
Anibal