ในการที่เราจะออกแบบ Template ของ Joomla นั้น ก่อนอื่นเลยต้องทำความเข้าใจ ในสไตร์ที่ผมทำก่อนนะครับ ซึ่งจะมีแนวคิดการเข้าใจมุมมองของการมองเห็นในเว็บไซต์ Joomla ว่าในแต่ละส่วนนั้นมันมาจากไหนและกำหนดการสร้างอย่างไร เพื่อให้เราสามารถทำรูปแบบของ Template ออกมาได้อย่างอิสระ และไม่ส่งผลกระทบในการวางโครงสร้าง วันนี้ผมมีคำตอบครับ
ก่อนอื่นเพื่อนๆ ต้องทำความเข้าใจก่อนว่า เวลาเราหรือ user ที่เข้าชมเว็บไซต์ มองมาที่เว็บไซต์ของเรานั้น เขาเห็นอะไร จากไหน เป็นหลักกก่อนนะครับ
นั้นหมายความว่า ไม่ว่าอะไรก็ตามที่เป็นการจัดโครงสร้าง หรือ การใช้ Script รวมถึง CSS ในการกำหนดรูปแบบต่างๆ ในเว็บไซต์ จะถูกมองเห็นจาก Template ก่อนเป็นหลัก ถ้าเรามีการกำหนดในแต่ละตำแหน่งอะไรไว้ในเทมเพลต ก็จะเห็นตามที่กำหนดจาก Template นั้นเอง ดังนั้นเราต้องคิดก่อนนะครับว่า เราสามารถปรับเปลี่ยนในการกำหนดรูปแบบที่ Template ตรงไหนได้บ้าง ถึงในส่วนที่เราต้องการแก้ไข จะไม่ได้อยู่ใน Template ก็ตาม
การที่เราต้องการแก้ไข Extenion ที่แสดงผลในหน้าเว็บไซต์ของเรานั้น โดยปกติเราก็ต้องเข้าไปในพาทโฟรเดอร์ของ Component หรือ Module ตัวนั้น เพื่อปรับโครงสร้าง แต่จริงๆ แล้ว เราสามารถสร้างการ Create Overrides เพื่อดึงรูปแบบโครงสร้างของ Extensions นั้นๆ มาไว้ใน Templateได้เลย
โดยที่หลังจากที่เราทำ Create Overrides กับ Extension แล้ว ไฟล์ต่างๆ ของ Extension ก็จะถูกดึงมาเก็บไว้ในโฟรเดอร์ html ของ template
ซึ่งการทำแบบนี้ จะทำให้เราสามารถแก้ไข ปรับเปลี่ยนได้ตามที่เราต้องการ โดยที่จะไม่ส่งผลไปที่ไฟล์โดยตรงของ Extension ทำให้ถึงจะมีการ Update Extension ก็จะไม่ทำให้รูปแบบที่เราแก้ไขหายไปนั้นเอง แต่จากที่ผมเคยทำมาโดยส่วนมากจะถูกดึงมาเฉพาะที่เป็นโครงสร้างนะครับ ในส่วน CSS จะมีน้อยมากที่ถูกดึงมาด้วยครับ
นั้นหมายความว่า เราสามารถที่จะวาง Script ต่างๆ ที่เราต้องใช้ อาทิเช่น Script จาก Boostrap หรือ Code จาก Facebook ,Google Analytics เป็นต้น ทำให้เราสามารถจัดการได้ในที่เดียว หรือแม้กระทั้งการเปลี่ยนเวอร์ชั่นหรือ พาทต่างๆ ของ Script ก็จะสามารถแก้ไขได้ง่ายๆ โดยไม่ส่งผลต่อ Extension อื่นๆ เลย
โดยปกติแล้ว เรามักจะกำหนดหรือสร้าง CSS ขึ้นมา เพื่อใช้กับตัว Template แต่ความเป็นจริงแล้วไฟล์ CSS ที่เรามีใน Template นั้น ยังสามารถนำมาใช้วาง CSS ของ Extension อื่นๆ ที่เราต้องการเปลี่ยนแปลงได้เช่นกัน อาทิเช่น ถ้า Extension กำหนดขนาดตัวอักษรไว้ 30px เราก็สามารถมาสร้างขนาดของตัวอักษรใหม่ใน CSS ของ Template เป็น 14px ได้ โดยที่ ระบบจะดึงค่า CSS ใน Template เป็นหลักก่อน ถ้ามีการกำหนดเอาไว้ แต่ถ้าไม่มีการกำหนดเอาไว้ ก็จะไปดึงค่า CSS ใน Extension มาใช้ตามปกติ หลักการนี้ก็คือการทำ CSS override ใน Template นั้นเอง