วิธีแก้เมนู Joomla ไม่แสดงในตำแหน่งที่กำหนด

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

❶ ตรวจโมดูลเมนูในหลังบ้าน

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

① เปิดรายการโมดูล

ไปที่ Content → Site Modules หรือเมนูจัดการโมดูลของเว็บไซต์ตามเวอร์ชัน Joomla ที่ใช้ แล้วค้นหาโมดูลชนิด Menu เปิดรายการที่ต้องการตรวจ

เช็กค่าพื้นฐานต่อไปนี้:

  • Status ต้องเป็น Published
  • ช่อง Select Menu ต้องเลือกชุดเมนูที่ต้องการแสดง
  • Access ต้องเป็นระดับที่ผู้เข้าชมเว็บไซต์เข้าถึงได้
  • Language ต้องตรงกับภาษาของหน้าที่ตรวจ หรือเลือก All หากต้องการแสดงทุกภาษา
  • ชื่อและรายละเอียดโมดูลต้องระบุได้ว่าเป็นเมนูชุดใด

② ตรวจตำแหน่งโมดูล

ในช่อง Position เลือกตำแหน่งที่เทมเพลตมีจริง เช่น ตำแหน่งส่วนหัวหรือแถบด้านข้าง ชื่อตำแหน่งเป็นเพียงชื่อที่ผู้พัฒนาเทมเพลตกำหนด ตำแหน่งชื่อ left จึงไม่ได้รับประกันว่าจะอยู่ด้านซ้ายของหน้าจอ

อย่าพิมพ์ชื่อตำแหน่งใหม่โดยเดา เพราะ Joomla อาจบันทึกโมดูลไว้ในตำแหน่งที่เทมเพลตไม่ได้เรียกแสดงผล

③ ตรวจลำดับและรูปแบบเมนู

หากตำแหน่งเดียวกันมีหลายโมดูล ให้ตรวจลำดับการแสดงผลของโมดูลเมนู และตรวจตัวเลือก Layout หรือรูปแบบการแสดงผล หากย้ายเมนูจากแถบด้านข้างไปส่วนหัว อาจต้องเลือก Layout ที่เหมาะกับเมนูแนวนอนด้วย

❷ ตรวจว่าตำแหน่งนั้นมีอยู่ในเทมเพลต

แต่ละเทมเพลตมีตำแหน่งโมดูลของตัวเอง และบางตำแหน่งอาจแสดงเฉพาะเมื่อมีโมดูลที่เผยแพร่แล้วอยู่ในตำแหน่งนั้น

① เปิด Preview Module Positions

ในหลังบ้านไปที่ System → Site Templates แล้วเปิด Options จากแถบเครื่องมือ ตั้งค่า Preview Module Positions เป็น Enabled จากนั้นบันทึก

② ดูแผนผังตำแหน่งบนหน้าเว็บไซต์

เปิดหน้าเว็บที่ต้องการตรวจ แล้วเติม ?tp=1 ต่อท้าย URL หาก URL มีเครื่องหมายคำถามอยู่แล้ว ให้ใช้ &tp=1 แทน ตัวอย่างเช่น:

https://example.com/?tp=1

หน้าเว็บจะแสดงกรอบตำแหน่งที่เทมเพลตเรียกใช้ ตรวจชื่อกรอบที่ต้องการ แล้วกลับไปเลือกชื่อนั้นในช่อง Position ของโมดูล

เมื่อดูตำแหน่งเสร็จ ให้ปิด Preview Module Positions เพื่อไม่ให้แสดงกรอบตรวจสอบบนเว็บไซต์ที่เปิดให้ผู้เข้าชมใช้งาน

③ ตรวจสไตล์เทมเพลตของหน้าที่มีปัญหา

หากตำแหน่งมีอยู่แต่เมนูยังไม่แสดง ให้ตรวจว่าหน้านั้นใช้สไตล์เทมเพลตใด บางเว็บไซต์กำหนดสไตล์ต่างกันในแต่ละรายการเมนู ตำแหน่งที่ใช้ได้ในสไตล์หนึ่งอาจไม่มีในอีกสไตล์หนึ่ง

❸ ตรวจการกำหนดหน้า ภาษา และสถานะเมนู

โมดูลอาจถูกตั้งให้แสดงเฉพาะบางหน้า หรือแสดงเฉพาะภาษาหนึ่ง จึงควรทดสอบจากหน้าที่ตรงกับเงื่อนไขจริง

① ตรวจ Menu Assignment

เปิดแท็บ Menu Assignment ของโมดูล แล้วเลือกวิธีแสดงผลให้ตรงกับต้องการ:

  • แสดงทุกหน้า
  • แสดงเฉพาะหน้าที่เลือก
  • แสดงทุกหน้า ยกเว้นหน้าที่เลือก

หากเลือกให้แสดงเฉพาะหน้าที่กำหนด ให้ตรวจว่ารายการเมนูของหน้าที่กำลังดูถูกเลือกไว้ด้วย

② ตรวจภาษาของโมดูลและรายการเมนู

เว็บไซต์หลายภาษาอาจมีโมดูลเมนูแยกตามภาษา ตรวจว่าภาษาของโมดูลตรงกับหน้าปัจจุบัน และรายการเมนูในชุดนั้นเผยแพร่แล้ว หากต้องการให้โมดูลแสดงทุกภาษา ให้ตรวจว่าการเลือก All เหมาะกับการตั้งค่าของเว็บไซต์หรือไม่

③ ตรวจว่าไม่ได้ซ่อนเมนูไว้โดยตั้งใจ

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

❹ แก้เสร็จแล้วทดสอบหน้าเว็บ

หลังปรับค่า ให้บันทึกและตรวจหน้าเว็บไซต์จริงโดยใช้หน้าที่มีปัญหา หากเว็บไซต์ของ ComSiam มีหลายสไตล์เทมเพลตหรือหลายภาษา ให้ตรวจเมนูในแต่ละรูปแบบที่ตั้งค่าไว้ด้วย

① ล้างแคชและโหลดหน้าใหม่

ล้างแคชของ Joomla และเบราว์เซอร์ แล้วเปิดหน้าเว็บใหม่ หากยังเห็นผลเดิม ให้ตรวจแคชจากโฮสติ้งหรือ CDN ที่เว็บไซต์ใช้อยู่

② ตรวจเมนูบนมือถือและคอมพิวเตอร์

เทมเพลตอาจแสดงเมนูคนละรูปแบบตามขนาดหน้าจอ ตรวจว่าเมนูเปิดได้ กดรายการย่อยได้ และไม่ถูกซ้อนทับด้วยภาพหรือองค์ประกอบอื่น

③ ตรวจความขัดแย้งจาก CSS

ถ้าตำแหน่งและโมดูลถูกต้อง แต่เห็นเพียงพื้นที่ว่าง ให้ตรวจ CSS ของเทมเพลตว่าไม่ได้ซ่อนโมดูลหรือเมนู เช่น มีกฎ display: none หรือสีตัวอักษรกลืนกับพื้นหลัง หากเพิ่งเพิ่ม CSS ให้ปิดกฎล่าสุดชั่วคราวแล้วทดสอบอีกครั้ง

เมื่อโมดูลเผยแพร่ เลือกชุดเมนูและตำแหน่งตรงกับเทมเพลต รวมถึงกำหนดหน้าและภาษาให้ถูกต้อง เมนู Joomla ก็ควรแสดงในจุดที่ต้องการได้ หากยังไม่ขึ้น ให้ตรวจตำแหน่งของสไตล์เทมเพลตที่หน้านั้นใช้อยู่เป็นลำดับถัดไป