it-swarm-es.tech

Desarrollo del complemento: error de análisis: error de sintaxis, 's' inesperado (T_STRING)

Estoy intentando desarrollar mi primer complemento para Joomla, es solo un complemento simple que coloca algunos JavaScript justo antes del cierre del cuerpo. El javascript funciona bien si lo coloco directamente en el index.php para la plantilla, así que confío en el js. Sin embargo, mi complemento arroja un error

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

Creo que tiene que ver con el uso de las comillas dobles en la línea 49 (donde está agregando el g.src) que está perdiendo el control. El fragmento a continuación muestra el script que estoy tratando de agregar, que incluye comillas dobles

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

    ";      

He intentado

  1. para cambiar el g.src a paréntesis individuales
  2. convertirlo en un/"para el g.src
2
rowanwins

Son las comillas dobles en el guión/cadena. Prueba esto:

<?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 si quieres las comillas dobles, escapa de esta manera:

$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

Me doy cuenta de que ha resuelto el problema del error de sintaxis, pero la forma correcta de resolver este problema es no insertar javascript con PHP de esta manera.

Lo que deberías estar haciendo es:

1) crea tu archivo javascript en media/plg_yourplugin/js/your-js-file.js

2) en PHP use la API de la biblioteca JHTML para agregar el archivo javascript al área index.php.

Aquí hay una publicación de blog de @Michael sobre cómo hacer esto correctamente: http://www.babdev.com/blog/139-use-the-media-folder-allow-overridable-media

3
Chad Windnagle

Tiene un PHP error de análisis.

Si su cadena comienza con " y termina con ". Todo interno " debe ser \".

0
Anibal