Aktualizacja do J3 daje JHtmlBehavior :: mootools not found

9

Otrzymuję błąd 500 z JHtmlBehavior::mootools not found. Wiem, że zostało to usunięte w J3, ale mój problem próbuje dowiedzieć się, gdzie jest ten problem.

Podejrzewam, że jest to jakieś rozszerzenie, ale myślę, że zaktualizowałem je wszystkie. Oczywiście, że nie. Nie widzę nic w moich dziennikach php ani konsoli narzędzi programistycznych, aby wskazać, gdzie może być problem. Nawet pozdrawiam JHtmlBehavior i nic nie wymyślę.

Wszelkie wskazówki, jak mogę to debugować?

Tomek
źródło

Odpowiedzi:

9

Znalazłem problem w moim własnym komponencie niestandardowym ... ugh. Nie mogłem znaleźć obraźliwego kodu, ponieważ szukałem JHtmlBehavior::mootools.

Ale obrażający kod był następujący:

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

Zmiana na to rozwiązuje problem:

JHtml::_('behavior.framework');
Tomek
źródło
3

Chociaż MooTools jest przestarzałe w Joomla 3, nadal jest dostępne (ale może zostać usunięte w przyszłych wersjach).

Możesz załadować strukturę dodając

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

(lub jeśli potrzebujesz zarówno biblioteki podstawowej, jak i większej liczby bibliotek):

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

do index.phppliku szablonu .

Będzie to przynajmniej tymczasowa poprawka, dopóki nie znajdziesz pliku / rozszerzenia przy użyciu kodu Mootools. Znalezienie winnego może być trudne, ale sugeruję zacząć od narzędzi programistycznych F12w przeglądarkach ( w większości przeglądarek) i poszukać błędów JavaScript, może to podpowiedzieć.

johanpw
źródło
Dzięki, ale próbowałem obu i nadal otrzymuję ten sam błąd. Narzędzia programistyczne (lub Firebug) nie mówią mi nic poza 500 wewnętrznymi błędami serwera. Jakieś inne pomysły?
Tom
Czy na pewno poprawnie dodałeś kod JOOMLAROOT/templates/YOURTEMPLATE/index.php? Możesz dodać go bezpośrednio po defined('_JEXEC') or die;. Sprawdź, czy MooTools został załadowany, wpisując window.MooToolsFirebug, powinien zwrócić Object { version: "1.4.5", build: "74e34796f5f76640cdb98853004650aea1499d69" }lub podobny.
johanpw
Dodanie tych JHtml::wywołań nie zatrzyma błędu, który jest wynikiem nieprawidłowego wywołania w PHP gdzieś na stronie.
Craig
2

Jest to błąd PHP, w wyniku którego Joomla zgłasza błąd, więc nie jest to błąd Javascript i nie można go naprawić przez dodanie większej liczby PHP. Jak podejrzewasz, musisz znaleźć źródło błędnego wywołania PHP.

Pierwszą rzeczą, którą należy zrobić, to zmienić raportowanie błędów na „Rozwój” i zobaczyć, że daje to nowe informacje, jeśli nie ma żadnych nowych informacji, które pomogłyby w wyśledzeniu źródła błędu, wówczas staje się to ręczne podejście do wycinania i kostki.

Spróbuj zamienić na krótki czas wbudowany szablon i sprawdzić, czy problem zniknie - jeśli tak, to albo szablon, albo moduł nie jest już wywoływany, ponieważ przypisana pozycja nie istnieje w domyślnym szablonie, na który się zamieniłeś. Jeśli nie jest to szablon, możesz dość szybko wyśledzić moduły.

Wreszcie, jeśli to nie pomoże, użyj metody 50%, aby szybko zawęzić grupę komponentów, modułów lub wtyczek.

Craig
źródło
2

Oto kilka kroków, aby dowiedzieć się, skąd pochodzi kod:

  1. Najlepszym sposobem jest pobranie pełnej kopii strony internetowej i przeszukanie systemu operacyjnego w jej katalogu w poszukiwaniu JHTML :: _ ('behawior.mootools'); . Zwykle komputer zwraca listę ze wszystkimi plikami zawierającymi ten konkretny ciąg.

  2. Jeśli pierwszy krok nie jest możliwy lub nie możesz uzyskać żadnych wyników z jakiegokolwiek powodu, powinieneś zacząć wyłączać rozszerzenia.

    za. Najpierw przełącz szablon - na podstawowy szablon prototypu Joomla 3. Jeśli problem najprawdopodobniej zniknie, to szablon zawiera przestarzały kod.

    b. Następnie możesz zacząć wyłączać moduły i wtyczki.

    do. Na koniec sprawdź, czy problem występuje tylko na określonych stronach komponentów innych firm.

Znajdź więcej informacji o ładowaniu frameworków JavaScript na Joomla w dokumentacji Joomla

FFrewin
źródło