Nâng cấp lên J3 mang lại cho JHtmlBehavior :: không tìm thấy mootools


9

Tôi nhận được một lỗi 500 với JHtmlBehavior::mootools not found. Tôi biết điều này đã được gỡ bỏ trong J3 nhưng vấn đề của tôi là cố gắng tìm ra vấn đề này ở đâu.

Tôi nghi ngờ đây là một phần mở rộng nhưng tôi nghĩ tôi đã cập nhật tất cả. Rõ ràng là không. Tôi không thấy gì trong nhật ký php hoặc bảng điều khiển công cụ dành cho nhà phát triển để chỉ ra vấn đề có thể xảy ra. Tôi thậm chí grep cho JHtmlBehavior và không có gì.

Bất kỳ lời khuyên về làm thế nào tôi có thể gỡ lỗi này?

Câu trả lời:


9

Tìm thấy vấn đề trong thành phần tùy chỉnh của riêng tôi ... ugh. Tôi không thể tìm thấy mã vi phạm bởi vì tôi đang tìm kiếm JHtmlBehavior::mootools.

Nhưng mã vi phạm là đây:

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

Thay đổi nó để sửa lỗi này:

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

3

Mặc dù MooTools không được dùng trong Joomla 3, nhưng nó vẫn có sẵn (nhưng có thể bị xóa trong các phiên bản trong tương lai).

Bạn có thể tải khung bằng cách thêm

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

(hoặc nếu bạn cần cả thư viện Core và More):

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

vào index.phptập tin mẫu của bạn .

Đây ít nhất sẽ là một sửa chữa tạm thời, cho đến khi bạn tìm thấy tệp / tiện ích mở rộng bằng mã Mootools. Tìm ra thủ phạm có thể khó, nhưng tôi khuyên bạn nên bắt đầu với trình duyệt Công cụ dành cho nhà phát triển ( F12trong hầu hết các trình duyệt) và tìm lỗi JavaScript, nó có thể cho bạn một gợi ý.


Cảm ơn nhưng tôi đã thử cả hai và vẫn nhận được cùng một lỗi. Công cụ dành cho nhà phát triển (hoặc Fireorms) không cho tôi biết gì ngoài 500 lỗi máy chủ nội bộ. Còn ý tưởng nào khác không?
Tom

Bạn có chắc là bạn đã thêm mã chính xác vào JOOMLAROOT/templates/YOURTEMPLATE/index.php? Bạn có thể thêm nó trực tiếp sau defined('_JEXEC') or die;. Kiểm tra xem MooTools đã được tải bằng cách nhập window.MooToolsvào Fireorms, nó sẽ trở lại Object { version: "1.4.5", build: "74e34796f5f76640cdb98853004650aea1499d69" }hoặc tương tự.
johanpw

Thêm các JHtml::cuộc gọi đó sẽ không dừng lỗi, đó là kết quả của một cuộc gọi không hợp lệ trong PHP trên trang web ở đâu đó.
Craig

2

Đây là lỗi PHP dẫn đến Joomla ném lỗi, vì vậy, không phải lỗi Javascript và không phải là lỗi cần sửa bằng cách thêm nhiều PHP. Như bạn nghi ngờ, bạn cần tìm nguồn của cuộc gọi PHP sai lầm.

Điều đầu tiên cần làm là bật báo cáo lỗi của bạn thành "Phát triển" và xem nó cung cấp cho bạn bất kỳ thông tin mới nào, nếu không có thông tin mới nào giúp bạn theo dõi nguồn gốc của lỗi thì nó sẽ trở thành phương pháp xúc xắc và xúc xắc thủ công.

Hãy thử hoán đổi nhanh với một mẫu có sẵn và xem sự cố có biến mất không - nếu đó là mẫu hoặc mô-đun không còn được gọi vì vị trí được gán không tồn tại trong mẫu mặc định mà bạn đã hoán đổi. Nếu đó không phải là mẫu bạn có thể theo dõi các mô-đun khá nhanh.

Cuối cùng, nếu điều đó không có ích, hãy sử dụng phương pháp 50% để thu hẹp nhanh chóng nhóm thành phần, mô-đun hoặc plugin nào là nguồn gốc của vấn đề.


2

Dưới đây là một số bước để tìm nơi mã đến từ:

  1. Cách tốt nhất là tải xuống một bản sao đầy đủ của trang web và thực hiện tìm kiếm hệ thống trong thư mục của nó cho JHTML :: _ ('behavior.mootools'); . Thông thường máy tính của bạn sẽ trả về một danh sách với tất cả các tệp có chứa chuỗi cụ thể này.

  2. Nếu bước đầu tiên là không thể hoặc bạn không thể nhận được bất kỳ kết quả nào vì bất kỳ lý do gì, thì bạn nên bắt đầu vô hiệu hóa tiện ích mở rộng.

    a. Đầu tiên chuyển đổi mẫu - sang mẫu protostar Joomla 3 cốt lõi. Nếu vấn đề biến mất rất có thể, đó là mẫu của bạn chứa mã không dùng nữa.

    b. Sau đó, bạn có thể bắt đầu tắt các mô-đun và plugin.

    c. Cuối cùng, hãy xem vấn đề có xuất hiện chỉ trên các trang cụ thể của các thành phần bên thứ 3 không.

Tìm thêm thông tin về cách tải Khung Javascript trên Joomla trên Tài liệu Joomla

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.