คราวที่แล้วได้เสนอการออกแบบ template ไป ซึ่งเป็นรายละเอียดโดยรวมใหญ่ ซึ่งไม่ได้ลงรายละเอียดการออกแบบ เล็ก ๆ ที่มีรายละเอียดปลีกย่อยเกี่ยวกับ css มากนักคราวนี้มาดูกันว่า จะกำหนด css อย่างไรให้กับ main menu ที่เป็นเมนูธรรมดา ๆ ของเดิม ๆ ของ joomla แสดงเป็นแบบ list หรือเป็นแบบเรียงแถวลงมา โมดูลที่ใช้คือ mod_mainmenu กำหนด Menu Style เป็นแบบ list

menu style

 

ที่ template กำหนด position ให้เป็น user1

View source
<?php if($this->countModules('user1')) { ?>
 <div id="user1">
 <jdoc:include type="modules" name="user1" style="xhtml" />
 </div>
<?php } ?>

 

โดยในไฟล์ index.php ของ template จะกำหนดไว้แค่นี้ ต่อจากนี้ไปก็เป็นส่วน ของการออกแบบ css เท่านั้น

 

ตอนนี้ใน template.css ยังไม่ได้กำหนดอะไรสักอย่าง

ก็ได้เมนูที่เป็นรูปแบบเดิม ๆ แบบนี้

joomla menu list

เมื่อดูด้วย firebug จะเห็นว่าเมนูนั้นประกอบด้วย

View source
<div class="moduletable_menu">
<h3> </h3> title ของเมนู
ul และ li

 

จากนั้นจะทำการกำหนด css โดยเปิด /css/template.css ขึ้นมา

โดยจะนำรูปนี้มาเป็นพื้นหลังของ title menu

bg menu

โดยการกำหนดพื้นหลังให้ div class moduletable_menu h3 (ดูใน fire bug จะเห็นแท็ก h3 ครอบอยู่ตรง title)

 

View source
#user1 div.moduletable_menu h3 {
 background: url(../images/menu_t.jpg) top left repeat-x;
}

รูปแบบก็จะออกมาเป็นแบบนี้

joomla menu

สีตัวอักษร ของ title ไม่ค่อยเข้ากับพื้นหลังเท่าไหร่ แถมยังติดด้านซ้ายมากไปดูไม่สวย ก็กำหนด

color: #fff; สีตัวอักษร  และ padding-left: 10px; ให้ box model เลื่อนมาทางซ้ายอีก 10 พิกเซล

View source
#user1 div.moduletable_menu h3 {
 color: #fff;
 padding-left: 10px;
 background: url(../images/menu_t.jpg) top left repeat-x;
}

 

box model

ก็จะได้แบบนี้

จากนั้นก็ทำการกำหนดความกว้างรวมของ module ไว้ที่ 200px เพื่อให้พื้นหลังเกิดความพอดีไม่ยาวเกินไปและจะได้ใส่ position อื่น ๆ อีกต่อไป ด้วยการกำหนด width: 200px; ให้กับ div id=”user1″

View source
#user1 div.moduletable_menu h3 {
 color: #fff;
 padding-left: 10px;
 background: url(../images/menu_t.jpg) top left repeat-x;
}
 
#user1 {
 width: 200px;
}

ดูจากรูปด้านบนจะเห็นว่ามี list style (จุดดำใหญ่ ๆ ที่อยู่หน้าเมนูแต่ละอัน) จากนั้นจะเอา list style นี้ออก ด้วยการใช้ list-style-type:none;

View source
#user1 ul {
list-style-position:outside;
list-style-type:none;
}

 

ผลที่ออกมา

list style none

 

จากนั้นจะใส่รูป news ลงไปหน้าเมนูแต่ละอัน

View source
#user1 div.moduletable_menu ul.menu li a {
 background:url(../images/news.png) no-repeat;
}

 

ก็จะได้แบบนี้

position

ตัวหนังสือจะซ้อนกับรูปอยู่ก็กำหนด padding-left: 20px; เข้าไป

View source
#user1 div.moduletable_menu ul.menu li a {
 line-height:13px;
 text-decoration:none;
 padding-left: 20px;
 background:url(../images/news.png) no-repeat;
}

line-height:13px; คือความสูงของบรรทัดแต่ละอัน

text-decoration:none; คือ กำหนดให้ตัวอักษรไม่ต้องมีเส้นด้านล่าง

ก็จะออกมาเป็นแบบนี้

padding-left

เท่านี้ก็เรียบร้อย ไม่ยากใช่ไหมครับ หรือใครมีการออกแบบที่แหวกแนวออกไปก็ใส่ใน css ได้เลยเต็มที่