เมนูและโมดูล
เมนูของ GCMS จะถูกกำหนดโดยโมดูลที่ติดตั้งครับ และจะถูกสร้างอัตโนมัติจากการติดตั้งโมดูล แต่เราก็สามารถควบคุมมันได้ด้วยการ config เพื่อให้มันสามารถแสดงผลหรือไม่ก็ได้ และมันยังมีความสามารถในการสร้างเมนูเพื่อลิงค์ไปยังเว็บไซต์ภายนอกได้อีกด้วย หรือแม้กระทั่งการนำเมนูภายในเว็บไซต์เอง เช่น การนำเมนู ตั้งกระทู้ใหม่ขึ้นมาแสดงบนเมนูหลัก เป็นต้น
ไฟล์ที่เกี่ยวข้องกับเมนูหลักๆก็คือไฟล์ config ครับ ซึ่งจะมี bin/config.php ซึ่งก็คือ config หลัก และ ไฟล์ modules/ชื่อโมดูล/config.php ซึงเป็น config ของโมดูลเอง
เรามาดูในส่วนของการกำหนดเมนูหลักของโมดูลกันก่อน
[code=php]$config[modules][] = 'main'; // โมดูลที่ติดตั้ง
$config[modules][] = 'blog'; // โมดูลที่ติดตั้ง
$config[modules][] = 'webboard'; // โมดูลที่ติดตั้ง
$config[modules][] = 'about'; // โมดูลที่ติดตั้ง
$config[modules][] = 'member'; // โมดูลที่ติดตั้ง[/code]
เมนูหลักจะถูกกำหนดโดยโมดูลที่ติดตั้งครับ หากโมดูลนั้นมีเมนู มันจะแสดงเมนูของโมดูลนั้นๆโดยอัตโนมัติ เช่น โมดูล main blog หรือ webboard เป็นต้น ส่วนโมดูลใดที่ไม่มีเมนูเป็นของตัวเอง เราก็ยังต้องกำหนดไว้ เพื่อให้ GCMS รู้จักโมดูลนั้น เช่นโมดูล member
เมนูจะถูกเรียงลำดับตามโมดูลที่ติดตั้ง และ โมดูลที่ติดตั้งอันแรก (เฉพาะโมดูลภายใน) จะถูกเลือกแสดงเป็นหน้าแรก ดังนั้น หากต้องการแสดงเว็บบอร์ดเป็นหน้าแรก ก็ให้เลื่อนเอาโมดูล webboard มาไว้รายการแรก และหากโมดูลใดไม่ต้องการใช้ ก็สามารถเอาอกได้ ซึ่งหากเอาโมดูลออก เราก็สามารถลบโฟลเดอร์ที่เกี่ยวข้องออกจากระบบได้ โดยไม่มีผลกระทบต่อระบบแต่อย่างใด ยกเว้น โมดูล member จำเป็นต้องติดตั้งไว้เสมอถึงแม้จะไม่ต้องการใช้ระบบสมาชิก เนื่องจากมันยังมีความเกี่ยวข้องกับระบบแอดมินอยู่
[code=php]// ไตเติลของโมดูล
$config[main][title] = $lng[LNG_MAIN_TITLE];
// คีย์เวิร์ดหน้า main ของโมดูลนี้
$config[main][keyword] = $lng[LNG_MAIN_KEYWORD];
// รายการที่แสดงบนเมนู
$config[main][menu] = $lng[LNG_MAIN_MENU];
$config[main][tooltip] = $lng[LNG_MAIN_MENU_TOOLTIP];[/code]
นี่คือค่ากำหนดของโมดดูล main (modules/main/config.php) จะเห็นได้ว่ามันถูกโยงไปยังตัวแปรภาษาอีกที ซึ่งโดยทั่วๆไปแล้ว เราไม่จำเป็นต้องแก้ไขอะไร และหากเราต้องการแก้ไขข้อความบนเมนู หรือ tooltip รวมถึงคีย์เวิร์ดของโมดูล ก็ให้ตามไปแก้ไขยังตัวแปรภาษาที่เกี่ยวข้องแทน เช่น หากต้องการแก้ไขข้อความที่แสดงบนเมนู main ก็ให้ไปแก้ไขที่ $lng[LNG_MAIN_MENU] ซึ่งจะอยู่ในไฟล์ language/main/th.php
การกำหนดว่าโมดูลใดจะถูกแสดงบนเมนูหรือไม่ก็อยู่ที่การกำหนดข้อความให้กับ $config[main][menu] นี่แหละครับ หากไม่ได้กำหนดตัวแปรนี้ไว้ หรือ ค่าของตัวแปรนี้เป็นค่าว่าง ก็จะไม่ปรากฏ เมนูของโมดูลนี้บนเมนูหลัก
[code=php]$config[modules][] = 'ชื่อโมดูล'; // เมนูแบบลิงค์ภายนอก
$config['ชื่อโมดูล'][url] = 'http://www.goragod.com'; // url สำหรับ link ของเมนูภายนอก
$config['ชื่อโมดูล'][tooltip] = 'หน้าหลักเว็บไซต์ :: Goragod.com'; // title ของเมนู
$config['ชื่อโมดูล'][menu] = 'หน้าหลัก'; // ข้อความบนเมนู[/code]
ในไฟล์ bin/config.php จะเห็นผมทำตัวอย่างเมนูภายนอกไว้ เมนูภายนอกนี้ ก็มีการกำหนดเหมือน เมนูภายในทุกประการ ต่างกันที่ จะมีตัวแปร $config['ชื่อโมดูล'][url] เพิ่มขึ้นมา ซึ่งตัวแปรนี้จะชี้ไปยัง URL ที่ต้องการ ซึ่งไม่ได้จำกัดว่า ต้องเป็น URL ภายนอกเว็บเท่านั้น อาจเป็น URL ภายในของเว็บเองที่ต้องการก็ได้ และ เมนูนี้ไม่จำเป็นต้องกำหนด $config['ชื่อโมดูล'][keyword] ครับ
[code=php]// เมนูตั้งกระทู้ใหม่
$config[modules][] = 'webboard-newtopic'; // เมนูแบบลิงค์ภายนอก
$config['webboard-newtopic'][url] = 'webboard-newtopic.html'; // url สำหรับ link ของเมนูภายนอก
$config['webboard-newtopic'][tooltip] = 'ตั้งกระทู้ใหม่'; // title ของเมนู
$config['webboard-newtopic'][menu] = 'ตั้งกระทู้ใหม่'; // ข้อความบนเมนู[/code]
ตัวอย่างการนำเมนูตั้งกระทู้ใหม่ ซึ่งเป็นเมนูภายใน ไปใส่ไว้บนเมนูหลัก การกำหนดค่าที่เห็น ตั้งกระทู้ใหม่ เพื่อเป็นการใช้ตัวแปลภาษาของโมดูลเอง ซึ่งจะแสดงผลจากตัวแปร $lng[LNG_WEBBOARD_NEWTOPIC] โดยอัตโนมัติ ซึ่งสามารถกำหนดเองได้เพิ่มเติมครับ โดยมีข้อกำหนดของตัวแปลภาษาว่าต้องขึ้นต้นชื่อตัวแปรว่า LNG_
คุณสามารถกำหนดตำแหน่งของเมนูได้เองโดยเรียงลำดับตามที่ต้องการ
ไฟล์ที่เกี่ยวข้องกับเมนูหลักๆก็คือไฟล์ config ครับ ซึ่งจะมี bin/config.php ซึ่งก็คือ config หลัก และ ไฟล์ modules/ชื่อโมดูล/config.php ซึงเป็น config ของโมดูลเอง
เรามาดูในส่วนของการกำหนดเมนูหลักของโมดูลกันก่อน
[code=php]$config[modules][] = 'main'; // โมดูลที่ติดตั้ง
$config[modules][] = 'blog'; // โมดูลที่ติดตั้ง
$config[modules][] = 'webboard'; // โมดูลที่ติดตั้ง
$config[modules][] = 'about'; // โมดูลที่ติดตั้ง
$config[modules][] = 'member'; // โมดูลที่ติดตั้ง[/code]
เมนูหลักจะถูกกำหนดโดยโมดูลที่ติดตั้งครับ หากโมดูลนั้นมีเมนู มันจะแสดงเมนูของโมดูลนั้นๆโดยอัตโนมัติ เช่น โมดูล main blog หรือ webboard เป็นต้น ส่วนโมดูลใดที่ไม่มีเมนูเป็นของตัวเอง เราก็ยังต้องกำหนดไว้ เพื่อให้ GCMS รู้จักโมดูลนั้น เช่นโมดูล member
เมนูจะถูกเรียงลำดับตามโมดูลที่ติดตั้ง และ โมดูลที่ติดตั้งอันแรก (เฉพาะโมดูลภายใน) จะถูกเลือกแสดงเป็นหน้าแรก ดังนั้น หากต้องการแสดงเว็บบอร์ดเป็นหน้าแรก ก็ให้เลื่อนเอาโมดูล webboard มาไว้รายการแรก และหากโมดูลใดไม่ต้องการใช้ ก็สามารถเอาอกได้ ซึ่งหากเอาโมดูลออก เราก็สามารถลบโฟลเดอร์ที่เกี่ยวข้องออกจากระบบได้ โดยไม่มีผลกระทบต่อระบบแต่อย่างใด ยกเว้น โมดูล member จำเป็นต้องติดตั้งไว้เสมอถึงแม้จะไม่ต้องการใช้ระบบสมาชิก เนื่องจากมันยังมีความเกี่ยวข้องกับระบบแอดมินอยู่
[code=php]// ไตเติลของโมดูล
$config[main][title] = $lng[LNG_MAIN_TITLE];
// คีย์เวิร์ดหน้า main ของโมดูลนี้
$config[main][keyword] = $lng[LNG_MAIN_KEYWORD];
// รายการที่แสดงบนเมนู
$config[main][menu] = $lng[LNG_MAIN_MENU];
$config[main][tooltip] = $lng[LNG_MAIN_MENU_TOOLTIP];[/code]
นี่คือค่ากำหนดของโมดดูล main (modules/main/config.php) จะเห็นได้ว่ามันถูกโยงไปยังตัวแปรภาษาอีกที ซึ่งโดยทั่วๆไปแล้ว เราไม่จำเป็นต้องแก้ไขอะไร และหากเราต้องการแก้ไขข้อความบนเมนู หรือ tooltip รวมถึงคีย์เวิร์ดของโมดูล ก็ให้ตามไปแก้ไขยังตัวแปรภาษาที่เกี่ยวข้องแทน เช่น หากต้องการแก้ไขข้อความที่แสดงบนเมนู main ก็ให้ไปแก้ไขที่ $lng[LNG_MAIN_MENU] ซึ่งจะอยู่ในไฟล์ language/main/th.php
การกำหนดว่าโมดูลใดจะถูกแสดงบนเมนูหรือไม่ก็อยู่ที่การกำหนดข้อความให้กับ $config[main][menu] นี่แหละครับ หากไม่ได้กำหนดตัวแปรนี้ไว้ หรือ ค่าของตัวแปรนี้เป็นค่าว่าง ก็จะไม่ปรากฏ เมนูของโมดูลนี้บนเมนูหลัก
[code=php]$config[modules][] = 'ชื่อโมดูล'; // เมนูแบบลิงค์ภายนอก
$config['ชื่อโมดูล'][url] = 'http://www.goragod.com'; // url สำหรับ link ของเมนูภายนอก
$config['ชื่อโมดูล'][tooltip] = 'หน้าหลักเว็บไซต์ :: Goragod.com'; // title ของเมนู
$config['ชื่อโมดูล'][menu] = 'หน้าหลัก'; // ข้อความบนเมนู[/code]
ในไฟล์ bin/config.php จะเห็นผมทำตัวอย่างเมนูภายนอกไว้ เมนูภายนอกนี้ ก็มีการกำหนดเหมือน เมนูภายในทุกประการ ต่างกันที่ จะมีตัวแปร $config['ชื่อโมดูล'][url] เพิ่มขึ้นมา ซึ่งตัวแปรนี้จะชี้ไปยัง URL ที่ต้องการ ซึ่งไม่ได้จำกัดว่า ต้องเป็น URL ภายนอกเว็บเท่านั้น อาจเป็น URL ภายในของเว็บเองที่ต้องการก็ได้ และ เมนูนี้ไม่จำเป็นต้องกำหนด $config['ชื่อโมดูล'][keyword] ครับ
[code=php]// เมนูตั้งกระทู้ใหม่
$config[modules][] = 'webboard-newtopic'; // เมนูแบบลิงค์ภายนอก
$config['webboard-newtopic'][url] = 'webboard-newtopic.html'; // url สำหรับ link ของเมนูภายนอก
$config['webboard-newtopic'][tooltip] = 'ตั้งกระทู้ใหม่'; // title ของเมนู
$config['webboard-newtopic'][menu] = 'ตั้งกระทู้ใหม่'; // ข้อความบนเมนู[/code]
ตัวอย่างการนำเมนูตั้งกระทู้ใหม่ ซึ่งเป็นเมนูภายใน ไปใส่ไว้บนเมนูหลัก การกำหนดค่าที่เห็น ตั้งกระทู้ใหม่ เพื่อเป็นการใช้ตัวแปลภาษาของโมดูลเอง ซึ่งจะแสดงผลจากตัวแปร $lng[LNG_WEBBOARD_NEWTOPIC] โดยอัตโนมัติ ซึ่งสามารถกำหนดเองได้เพิ่มเติมครับ โดยมีข้อกำหนดของตัวแปลภาษาว่าต้องขึ้นต้นชื่อตัวแปรว่า LNG_
คุณสามารถกำหนดตำแหน่งของเมนูได้เองโดยเรียงลำดับตามที่ต้องการ
16 สค. 2552 14:34 |
0 |
ดู 467 |
