อัปเกรดเป็น J3 ไม่ให้ JHtmlBehavior :: mootools ไม่พบ


9

ฉันได้รับข้อผิดพลาด 500 JHtmlBehavior::mootools not foundครั้ง ฉันรู้ว่าสิ่งนี้ได้ถูกลบออกใน J3 แต่ปัญหาของฉันคือพยายามค้นหาว่าปัญหานี้อยู่ที่ไหน

ฉันคิดว่ามันเป็นส่วนเสริม แต่ฉันคิดว่าฉันได้อัปเดตทั้งหมดแล้ว เห็นได้ชัดว่าไม่ ฉันไม่เห็นสิ่งใดในบันทึกของ php หรือคอนโซลเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์เพื่อระบุว่าปัญหาอาจเกิดขึ้นที่ใด ฉันเคย grep สำหรับ JHtmlBehavior และมากับอะไร

มีคำแนะนำเกี่ยวกับวิธีการแก้ไขข้อบกพร่องนี้อย่างไร

คำตอบ:


9

พบปัญหาในองค์ประกอบที่กำหนดเองของฉันเอง ... ฉันหารหัสที่ละเมิดไม่ได้เพราะกำลังมองหาJHtmlBehavior::mootoolsอยู่

แต่รหัสที่ละเมิดคือ:

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

การเปลี่ยนเป็นการแก้ไขปัญหา:

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

3

แม้ว่า MooTools จะเลิกใช้ใน Joomla 3 แต่ก็ยังคงมีอยู่ (แต่อาจถูกลบออกในรุ่นอนาคต)

คุณสามารถโหลดเฟรมเวิร์กได้โดยการเพิ่ม

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

(หรือถ้าคุณต้องการทั้ง Core และ More libraries):

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

ไปยังindex.phpไฟล์เทมเพลตของคุณ

อย่างน้อยนี่จะเป็นการแก้ไขชั่วคราวจนกว่าคุณจะพบไฟล์ / นามสกุลโดยใช้รหัส Mootools การค้นหาผู้ร้ายอาจเป็นเรื่องยาก แต่ฉันขอแนะนำให้คุณเริ่มต้นด้วยเครื่องมือนักพัฒนาเบราว์เซอร์ของคุณ ( F12ในเบราว์เซอร์ส่วนใหญ่) และค้นหาข้อผิดพลาดของ JavaScript มันอาจให้คำแนะนำแก่คุณ


ขอบคุณ แต่ฉันพยายามทั้งสองและยังได้รับข้อผิดพลาดเดียวกัน เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ (หรือ Firebug) ไม่มีข้อผิดพลาดอื่นใดนอกจากเซิร์ฟเวอร์ภายใน 500 ข้อ ความคิดอื่น ๆ ?
ทอม

คุณแน่ใจว่าคุณเพิ่มรหัสที่ถูกต้องในJOOMLAROOT/templates/YOURTEMPLATE/index.php? defined('_JEXEC') or die;คุณสามารถเพิ่มได้โดยตรงหลังจาก ตรวจสอบว่า MooTools ถูกโหลดโดยการพิมพ์window.MooToolsใน Firebug มันควรจะกลับมาObject { version: "1.4.5", build: "74e34796f5f76640cdb98853004650aea1499d69" }หรือคล้ายกัน
johanpw

การเพิ่มการJHtml::โทรเหล่านั้นจะไม่หยุดข้อผิดพลาดซึ่งเป็นผลมาจากการโทรที่ไม่ถูกต้องใน PHP ในเว็บไซต์บางแห่ง
Craig

2

นี่เป็นข้อผิดพลาดของ PHP ที่ทำให้ Joomla เกิดข้อผิดพลาดดังนั้นไม่ใช่ข้อผิดพลาดของ Javascript และไม่ใช่สิ่งที่ต้องแก้ไขโดยการเพิ่ม PHP เพิ่มเติม ตามที่คุณสงสัยคุณจะต้องค้นหาแหล่งที่มาของการโทร PHP ที่ผิดพลาด

สิ่งแรกที่ต้องทำคือเปิดการรายงานข้อผิดพลาดของคุณเป็น "การพัฒนา" และดูว่าให้ข้อมูลใหม่ใด ๆ แก่คุณหากไม่มีข้อมูลใหม่ที่ช่วยให้คุณสามารถติดตามแหล่งที่มาของข้อผิดพลาดได้

ลองเปลี่ยนเป็นเทมเพลตในตัวโดยย่อและดูว่าปัญหาหายไปหรือไม่หากเป็นเทมเพลตหรือโมดูลที่ไม่มีการเรียกอีกต่อไปเนื่องจากไม่มีตำแหน่งที่กำหนดในเทมเพลตเริ่มต้นที่คุณเปลี่ยน ถ้าไม่ใช่เทมเพลตคุณสามารถติดตามโมดูลได้อย่างรวดเร็ว

สุดท้ายหากวิธีนี้ไม่ได้ผลให้ใช้วิธี 50% เพื่อ จำกัด ขอบเขตให้เร็วขึ้นว่ากลุ่มของส่วนประกอบโมดูลหรือปลั๊กอินใดเป็นสาเหตุของปัญหา


2

นี่คือขั้นตอนบางส่วนเพื่อค้นหาว่ารหัสมาจากไหน:

  1. วิธีที่ดีที่สุดคือดาวน์โหลดสำเนาฉบับเต็มของเว็บไซต์และทำการค้นหาระบบ OS ภายในไดเรกทอรีของJHTML :: _ ('behavior.mootools'); . โดยปกติคอมพิวเตอร์ของคุณจะส่งคืนรายการพร้อมไฟล์ทั้งหมดที่มีสตริงเฉพาะนี้

  2. หากขั้นตอนแรกเป็นไปไม่ได้หรือคุณไม่สามารถรับผลลัพธ์ใด ๆ ด้วยเหตุผลใดก็ตามคุณควรเริ่มปิดใช้งานส่วนขยาย

    ก่อนอื่นเปลี่ยนเทมเพลต - เป็นเทมเพลตหลัก Joomla 3 protostar หากปัญหาน่าจะเกิดขึ้นส่วนใหญ่เป็นเทมเพลตของคุณที่มีรหัสที่เลิกใช้แล้ว

    ข จากนั้นคุณสามารถเริ่มปิดโมดูลและปลั๊กอิน

    ค. สุดท้ายดูว่าปัญหานี้เกิดขึ้นเฉพาะในหน้าเว็บเฉพาะขององค์ประกอบบุคคลที่สามหรือไม่

ค้นหาข้อมูลเพิ่มเติมเกี่ยวกับวิธีโหลด Javascript Framework บน Joomla บนเอกสาร Joomla

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.