Ein Upgrade auf J3 führt dazu, dass JHtmlBehavior :: mootools nicht gefunden wurde

9

Ich bekomme einen 500er Fehler mit JHtmlBehavior::mootools not found. Ich weiß, dass dies in J3 entfernt wurde, aber mein Problem besteht darin, herauszufinden, wo dieses Problem liegt.

Ich vermute, es ist eine Art Erweiterung, aber ich glaube, ich habe sie alle aktualisiert. Offensichtlich nicht. Ich sehe nichts in meinen PHP-Protokollen oder in der Entwickler-Tools-Konsole, was darauf hindeutet, wo das Problem liegen könnte. Ich greife sogar nach JHtmlBehavior und finde nichts.

Irgendwelche Tipps, wie ich das debuggen kann?

Tom
quelle

Antworten:

9

Ich habe das Problem in meiner eigenen benutzerdefinierten Komponente gefunden ... ugh. Ich konnte den beleidigenden Code nicht finden, weil ich gesucht habe JHtmlBehavior::mootools.

Aber der beleidigende Code war folgender:

JHTML::_('behavior.mootools');

Wenn Sie dies ändern, wird das Problem behoben:

JHtml::_('behavior.framework');
Tom
quelle
3

Obwohl MooTools in Joomla 3 veraltet ist, ist es weiterhin verfügbar (wird jedoch möglicherweise in zukünftigen Versionen entfernt).

Sie können das Framework durch Hinzufügen laden

JHtml::_('behavior.framework');

(oder wenn Sie sowohl Core- als auch More-Bibliotheken benötigen):

JHtml::_('behavior.framework', true);

in die index.phpDatei Ihrer Vorlage .

Dies ist zumindest eine vorübergehende Korrektur, bis Sie die Datei / Erweiterung mithilfe von Mootools-Code finden. Es mag schwierig sein, den Schuldigen zu finden, aber ich schlage vor, Sie beginnen mit den Entwicklertools Ihres Browsers ( F12in den meisten Browsern) und suchen nach JavaScript-Fehlern. Dies kann Ihnen einen Hinweis geben.

johanpw
quelle
Danke, aber ich habe beide ausprobiert und bekomme immer noch den gleichen Fehler. Entwicklertools (oder Firebug) sagen mir nichts anderes als 500 interne Serverfehler. Irgendwelche anderen Ideen?
Tom
Sind Sie sicher, dass Sie den Code korrekt hinzugefügt haben JOOMLAROOT/templates/YOURTEMPLATE/index.php? Sie können es direkt danach hinzufügen defined('_JEXEC') or die;. Überprüfen Sie, ob MooTools geladen wurde, indem Sie window.MooToolsFirebug eingeben . Es sollte zurückgegeben werden Object { version: "1.4.5", build: "74e34796f5f76640cdb98853004650aea1499d69" }oder ähnliches.
Johanpw
Durch das Hinzufügen dieser JHtml::Aufrufe wird der Fehler nicht gestoppt, der auf einen ungültigen Aufruf in PHP auf der Site zurückzuführen ist.
Craig
2

Dies ist ein PHP-Fehler, der dazu führt, dass Joomla einen Fehler auslöst, also kein Javascript-Fehler und nichts, das durch Hinzufügen von mehr PHP behoben werden muss. Wie Sie vermutet haben, müssen Sie die Quelle des fehlerhaften PHP-Aufrufs finden.

Das erste, was Sie tun müssen, ist, Ihre Fehlerberichterstattung auf "Entwicklung" zu stellen und zu sehen, dass Sie neue Informationen erhalten. Wenn es keine neuen Informationen gibt, mit denen Sie die Fehlerquelle ermitteln können, wird dies zum manuellen Slice-and-Dice-Ansatz.

Versuchen Sie, kurz zu einer integrierten Vorlage zu wechseln, und prüfen Sie, ob das Problem behoben ist. Wenn dies der Fall ist, wird entweder die Vorlage oder ein Modul nicht mehr aufgerufen, da die zugewiesene Position in der Standardvorlage, zu der Sie gewechselt haben, nicht vorhanden ist. Wenn es nicht die Vorlage ist, können Sie die Module ziemlich schnell finden.

Wenn dies nicht hilft, können Sie mithilfe der 50% -Methode schnell eingrenzen, welche Gruppe von Komponenten, Modulen oder Plugins die Ursache des Problems sind.

Craig
quelle
2

Hier sind einige Schritte, um herauszufinden, woher der Code kommt:

  1. Der beste Weg ist, eine vollständige Kopie der Website herunterzuladen und in ihrem Verzeichnis nach JHTML :: _ ('behaviour.mootools') zu suchen . . Normalerweise gibt Ihr Computer eine Liste mit allen Dateien zurück, die diese bestimmte Zeichenfolge enthalten.

  2. Wenn der erste Schritt nicht möglich ist oder Sie aus irgendeinem Grund keine Ergebnisse erhalten, sollten Sie die Erweiterungen deaktivieren.

    ein. Wechseln Sie zuerst die Vorlage - zur Kernvorlage für Joomla 3-Protosterne. Wenn das Problem höchstwahrscheinlich behoben wird, enthält Ihre Vorlage den veralteten Code.

    b. Dann können Sie Module und Plugins ausschalten.

    c. Überprüfen Sie abschließend, ob das Problem nur auf bestimmten Seiten von Komponenten von Drittanbietern auftritt.

Weitere Informationen zum Laden von Javascript Frameworks auf Joomla in der Joomla-Dokumentation finden Sie hier

FFrewin
quelle