it-swarm.com.de

Joomla 3.4.1 Wie lösche ich JCaption, mit jQuery aufgerufen?

Ich möchte JCaption aus der head-, jquery- und jcaption-Datei löschen, die ich mit den folgenden Methoden deaktiviert habe:

unset($doc->_scripts[JURI::root(true) . '/media/jui/js/jquery.min.js']);
unset($doc->_scripts[JURI::root(true) . '/media/jui/js/jquery-noconflict.js']);
unset($doc->_scripts[JURI::root(true) . '/media/jui/js/jquery-migrate.min.js']);
unset($doc->_scripts[JURI::root(true) . '/media/system/js/caption.js']);

Zum Löschen von jcaption in früheren Versionen, in denen Mootools verwendet werden, ist Folgendes erforderlich:

$this->_script = preg_replace('%window\.addEvent\(\'load\',\s*function\(\)\s*{\s*new\s*JCaption\(\'img.caption\'\);\s*}\);\s*%', '', $this->_script);

Ich habe auch versucht, es auf jquery zu löschen, aber ich habe nicht mit preg_replace () Erfahrung, was zu tun ist, um JCatpion aus dem Kopf zu löschen?

Mein Code:

$this->_script = preg_replace('%jQuery\(window\)\.on(\'load\',\s*function\(\)\s*{\s*new\s*JCaption\(\'img.caption\');\s*}\);\s*%', '', $this->_script);
10
xxx

Dies ist eine sehr alte Frage und wahrscheinlich liest sie niemand mehr, aber ich werde meine Antwort trotzdem posten.

In der Regex für die Beschriftung JQuery sind Fehler aufgetreten. Sie brauchen keine Punkte zu maskieren, müssen aber Sonderzeichen maskieren. Außerdem müssen Sie den richtigen Schlüssel im Array als Ziel angeben, sodass Sie nach dem Aufrufen des Skriptobjekts ['text/javascript'] Hinzufügen müssen.

Der korrekte reguläre Ausdruck/preg_replace wäre also:

$this->_script['text/javascript'] = preg_replace('%jQuery\(window\).on\(\'load\',\s*function\(\)\s*\{\s*new\s*JCaption\(\'img.caption\'\)\;\s*\}\)\;\s*%', '', $this->_script['text/javascript']);

Vor nicht allzu langer Zeit hatte ich auch mit Regex zu kämpfen, aber diese Seite hat mir sehr geholfen: http://regexr.com/ Wenn Sie die Seite ausprobieren, beachten Sie, dass Sie das offene und nicht verwenden müssen Tags schließen, weil es schon automatisch da ist.

5
Laci K

Versuche dies:

$this->_scripts = array();
unset($this->_script['text/javascript']);
4
Sahil Purav

Versuche dies:

if (isset($this->_script['text/javascript']))
{ $this->_script['text/javascript'] = preg_replace('%window\.addEvent\    (\'load\',\s*function\(\)\s*{\s*new\s*JCaption\(\'img.caption\'\);\s*}\);\s*%',     '', $this->_script['text/javascript']);
if (empty($this->_script['text/javascript']))
unset($this->_script['text/javascript']);}
$this->_scripts = array();
2
stckvrw

Wenn Sie bereit sind, ein Plugin zu verwenden, um das injizierte Skript-Tag zu deaktivieren, kann Folgendes hilfreich sein.

public function onBeforeRender() {
    // Front end
    if ($this->app instanceof JApplicationSite) {
        $doc = JFactory::getDocument();

        foreach ($doc->_script as $key => $script) {
            if (stristr($key, 'text/javascript') !== false) {
                unset($doc->_script['text/javascript']);
            }
        }
    }
}
0