it-swarm.dev

Sviluppo plugin - errore di analisi: errore di sintassi, "s" imprevisto (T_STRING)

Sto tentando di sviluppare il mio primo plugin per Joomla, è solo un semplice plugin che inserisce un po 'di javascript appena prima della chiusura del corpo. Il javascript funziona bene se lo posiziono direttamente in index.php per il modello, quindi sono fiducioso in js. Il mio plugin tuttavia genera un errore

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

Penso che abbia a che fare con l'uso delle doppie virgolette sulla riga 49 (dove si aggiunge g.src) che sta gettando le cose fuori di testa. Lo snippet di seguito mostra lo script che sto cercando di aggiungere che include le doppie virgolette

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

    ";      

Ci ho provato

  1. per cambiare g.src tra parentesi singole
  2. renderlo a/"per g.src
2
rowanwins

Sono le doppie virgolette nello script/stringa. Prova questo:

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

O se vuoi le virgolette doppie, le sfugge in questo modo:

$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

Mi rendo conto che hai risolto il problema dell'errore di sintassi, ma il modo giusto per risolvere questo problema è non inserire javascript con PHP in questo modo.

Quello che dovresti fare è:

1) crea il tuo file javascript in media/plg_yourplugin/js/your-js-file.js

2) in PHP usa l'API della libreria JHTML per aggiungere il file javascript all'area index.php.

Ecco un post sul blog di @Michael su come farlo correttamente: http://www.babdev.com/blog/139-use-the-media-folder-allow-overridable-media

3
Chad Windnagle

Hai un PHP errore di analisi.

Se la stringa inizia con " E termina con ". Tutti i " Interni devono essere \".

0
Anibal