Contact
Line : comsiam
Contact
Line : comsiam

การเพิ่ม JavaScript ใน Joomla ทำได้หลายวิธี ขึ้นอยู่กับเทมเพลตและเวอร์ชันที่ใช้ หากเทมเพลตมีช่องสำหรับใส่โค้ดกำหนดเอง ให้ใช้ช่องนั้นก่อน ส่วนการเพิ่มไฟล์ JavaScript โดยตรงควรวางไฟล์ในตำแหน่งที่เหมาะสมและตั้งค่าให้ Joomla เรียกใช้ เพื่อให้โค้ดทำงานถูกหน้าและไม่หายเมื่ออัปเดตเทมเพลต
ก่อนเพิ่มโค้ด ให้กำหนดก่อนว่าต้องการให้ JavaScript ทำอะไร เช่น เปิดเมนูบนมือถือ แสดงปุ่มกลับขึ้นด้านบน หรือควบคุมแถบแจ้งเตือน จากนั้นเลือกวิธีที่เหมาะสม
เทมเพลตเชิงพาณิชย์หลายตัวมีช่องสำหรับเพิ่ม JavaScript หรือ Custom Code ในหน้าแก้ไขสไตล์เทมเพลต วิธีนี้เหมาะกับโค้ดสั้น ๆ และไม่ต้องแก้ไฟล์ระบบ
ชื่อเมนูและตำแหน่งช่องอาจแตกต่างกันตามเทมเพลต หากไม่พบช่องดังกล่าว ให้ตรวจคู่มือหรือการตั้งค่าของเทมเพลตนั้นก่อน
หากใช้ Cassiopeia ซึ่งเป็นเทมเพลตมาตรฐานของ Joomla 4 เป็นต้นไป สามารถเพิ่มไฟล์ user.js ในโฟลเดอร์ JavaScript ของเทมเพลตได้ โดยเข้าไปที่ System → Site Templates → Cassiopeia Details and Files แล้วตรวจว่ามีโฟลเดอร์ js และไฟล์ user.js หรือไม่
ถ้าไม่มี ให้สร้างไฟล์ user.js ในตำแหน่งที่เทมเพลตกำหนด แล้วใส่เฉพาะ JavaScript โดยไม่ครอบด้วยแท็ก <script> ตัวอย่างโค้ด:
document.addEventListener('DOMContentLoaded', function () {
console.log('JavaScript ของเว็บไซต์พร้อมทำงาน');
});
ตำแหน่งและวิธีโหลดไฟล์อาจต่างกันตามเวอร์ชัน Joomla และเทมเพลต ควรตรวจสอบรายละเอียดของเทมเพลตที่ใช้อยู่ก่อน หากไฟล์ไม่ทำงาน ให้ใช้วิธีที่ผู้พัฒนาเทมเพลตระบุ หรือให้ผู้ดูแลระบบตรวจการลงทะเบียนไฟล์
กรณีเทมเพลตที่พัฒนาขึ้นเอง หรือผู้ดูแลมีความรู้ด้าน PHP และระบบไฟล์ ให้จัดเก็บไฟล์ JavaScript ในโฟลเดอร์ของเทมเพลต และลงทะเบียนไฟล์ผ่าน Web Asset Manager ของ Joomla ตัวอย่างการเรียกใช้ไฟล์จากโค้ดเทมเพลต:
$wa = $this->getDocument()->getWebAssetManager();
$wa->useScript('ชื่อแอสเซตที่ลงทะเบียนไว้');
วิธีนี้ต้องมีการกำหนดแอสเซตในไฟล์ joomla.asset.json และต้องใช้ชื่อแอสเซตให้ตรงกัน จึงควรให้ผู้พัฒนาเทมเพลตดำเนินการ หากไม่คุ้นเคยกับ PHP หรือโครงสร้างเทมเพลต อย่าแก้ไฟล์หลักโดยเดาสุ่ม
เมื่อเลือกตำแหน่งได้แล้ว ให้เขียนโค้ดอย่างเป็นระเบียบและทำเฉพาะงานที่จำเป็น ตัวอย่างนี้ใช้สำหรับตรวจสอบว่าไฟล์ถูกโหลดและสั่งงานได้:
document.addEventListener('DOMContentLoaded', function () {
const button = document.querySelector('.back-to-top');
if (!button) {
return;
}
button.addEventListener('click', function () {
window.scrollTo({
top: 0,
behavior: 'smooth'
});
});
});
โค้ดตัวอย่างจะทำงานเมื่อหน้าเว็บมีองค์ประกอบที่ใช้คลาส .back-to-top อยู่ด้วย หากไม่มีปุ่มดังกล่าว โค้ดจะหยุดทำงานอย่างปลอดภัย
ก่อนสร้างหรือแก้ไฟล์ ให้สำรองไฟล์เทมเพลตและฐานข้อมูล หรือสร้างสำเนาเว็บไซต์สำหรับทดสอบ ตั้งชื่อไฟล์สำรองให้สื่อความหมาย เช่น user-before-update.js เพื่อให้ย้อนกลับได้เมื่อเกิดข้อผิดพลาด
หากใช้ไฟล์ .js ให้วางเฉพาะ JavaScript ในไฟล์นั้น หากใช้ช่อง Custom Code ให้อ่านคำอธิบายของเทมเพลตก่อนว่าต้องใส่โค้ดพร้อมแท็ก <script> หรือไม่ เพราะรูปแบบการรับโค้ดไม่เหมือนกันทุกเทมเพลต
หลีกเลี่ยงการวางโค้ดในไฟล์ index.php หรือไฟล์หลักของเทมเพลตโดยตรง เพราะการอัปเดตอาจเขียนทับการแก้ไข และความผิดพลาดเพียงจุดเดียวอาจทำให้หน้าเว็บแสดงผลไม่ครบ
หากมีปลั๊กอินหรือส่วนเสริมที่ใส่ JavaScript อยู่แล้ว อย่าเพิ่มโค้ดชุดเดิมซ้ำอีกครั้ง การโหลดไฟล์ซ้ำอาจทำให้ปุ่มตอบสนองหลายครั้ง หรือเกิดข้อผิดพลาดในคอนโซลของเบราว์เซอร์
หลังบันทึกแล้ว ให้ตรวจทั้งหน้าที่ตั้งใจใช้และหน้าสำคัญอื่น ๆ ของเว็บไซต์ ทดสอบบนคอมพิวเตอร์และมือถือ รวมถึงตรวจหน้าแรก หน้าบทความ และหน้าที่มีโมดูลเกี่ยวข้อง
หากยังเห็นผลแบบเดิม ให้ล้างแคชของ Joomla และแคชของเบราว์เซอร์ หากเว็บไซต์ใช้ระบบแคชจากโฮสติ้งหรือ CDN ให้ล้างแคชส่วนนั้นด้วย แล้วโหลดหน้าเว็บใหม่
เปิดหน้าเว็บแล้วกดปุ่ม F12 เลือกแท็บ Console จากนั้นตรวจว่ามีข้อความผิดพลาดสีแดงหรือไม่ ข้อผิดพลาดที่พบบ่อย ได้แก่ สะกดชื่อไฟล์หรือชื่อคลาสไม่ตรง เรียกใช้องค์ประกอบก่อนที่หน้าเว็บจะโหลด และมีโค้ดอีกชุดหนึ่งประกาศตัวแปรซ้ำ
เปิดเครื่องมือสำหรับนักพัฒนาในเบราว์เซอร์ เลือกแท็บ Network แล้วกรองรายการด้วยคำว่า JS จากนั้นโหลดหน้าเว็บใหม่ หากไม่พบไฟล์ ให้ตรวจตำแหน่งไฟล์ การตั้งค่าของเทมเพลต และวิธีลงทะเบียนแอสเซต
สำหรับเว็บไซต์ของ ComSiam การทดสอบในหน้าสำเนาก่อนนำขึ้นเว็บไซต์จริงช่วยลดโอกาสที่เมนูหรือฟังก์ชันส่วนอื่นจะเสียจากโค้ดใหม่
เมื่อเพิ่ม JavaScript ถูกตำแหน่งและทดสอบครบแล้ว โค้ดจะทำงานตามจุดประสงค์โดยไม่รบกวนส่วนอื่นของเว็บไซต์ ควรจดบันทึกว่าเพิ่มไฟล์หรือโค้ดไว้ที่ใด เพื่อให้ดูแลต่อได้สะดวก โดยเฉพาะเมื่อมีการอัปเดตเทมเพลตหรือเปลี่ยนผู้ดูแลเว็บไซต์