รวบรัดตัดตอนเลย เอาเป็นว่า วางรูปแบบต่างเสร็จเรียบร้อยหมดแล้ว คราวนี้ก็ลอง enable โมดูลให้อยู่ตามตำแหน่งต่าง ๆ บน template ให้หมดแล้วดูว่า ผิดเพี้ยนหรือไม่ ถ้าไม่ได้ตามต้องการให้ไปปรับแก้ที่ css เอา ในการดูตำแหน่ง module position ของ joomla ให้เติม ?tp=1 ต่อท้าย url ลงไป ก็จะเห็นตำแหน่ง module ทั้งหมดบนหน้า template เช่น http://www.you.com/?tp=1

 

 

 

คราวนี้ก็ลอง preview ดู กับหลาย ๆ เบราเซอร์ ว่าการแสดงผลเป็นปกติหรือไม่ ดังรูปบน เป็นการ ดูใน firefox ปกติดี

 

 

ส่วนอันนี้เป็นการดูใน IE6 (Internet Explorer 6) จะเห็นว่าในส่วนของ content นั้น ชิดซ้ายอยู่ ส่วน head นั้นอยู่ที่เดิม วิธีแก้ไขคือ สร้างไฟล์ CSS อีกชุดหนึ่งเอาไว้ใช้กับ เฉพาะ ie6 โดยเฉพาะ โดยการก็อปปี้ โค๊ด css อันเดิมที่ใช้ (template.css) แล้วนำมาตั้งชื่อใหม่ เป็น ie6.css

 

แล้วเพิ่มโค๊ดนี้ลงไปใน index.php ของ template ในแท็ก <head> เพื่อเรียก css ตัวนี้ขึ้นมาเฉพาะเมื่อเปิดกับ ie6

View source
  1. <!--[if lte IE 6]>
  2.         <link href="baseurl ?>/templates/template ?>/css/ie6.css" rel="stylesheet" type="text/css" />
  3. <![endif]-->

ก็จะเป็นแบบนี้

View source
<?php
defined('_JEXEC') or die('Restricted access');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org
/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="language; ?>" lang="
language; ?>">
<head>
<jdoc:include type="head" />
 
<link rel="stylesheet" href="/joomla/baseurl ?>/templates/system/css/system.css" type="text/css" />
<link rel="stylesheet" href="/joomla/baseurl ?>/templates/system/css/general.css" type="text/css" />
<link rel="stylesheet" href="/joomla/baseurl ?>/templates/template ?>
/css/template.css" type="text/css" />
countModules('user1')): ?>
params->get('user1Type') == 'css'): ?>
<link rel="stylesheet" href="/joomla/baseurl ?>/css/sosdmenu.css" type="text/css" />
<script language="javascript" type="text/javascript" src="/joomla/template ?>
/js/cssmenu.js"></script>
<?php else: ?>
<link rel="stylesheet" href="/joomla/baseurl ?>/templates/template ?>
/css/sosdmenu.css" type="text/css" />
<script language="javascript" type="text/javascript" src="/joomla/template ?>/templates/
template ?>/js/moomenu.js"></script>
<?php endif; ?>
<?php endif; ?>
<!--[if lte IE 6]>
        <link href="/joomla/baseurl ?>/templates/template ?>
/css/ie6.css" rel="stylesheet" type="text/css" />
<![endif]-->
</head>
<body id="page_bg">
 
<a name="top"></a>
 
<div id="mainbody">
<div id="header1">
<div class="logo"><a href="/joomla/index.php">getCfg('sitename') ;?></a></div>
<a href="/joomla/index.php" title="กลับสู่หน้าแรก"><div id="headerimage"></div></a>
countModules('user1')) : ?>
<div id="user1">
        <div id="mainnav">
    <jdoc:include type="modules" name="user1" style="xhtml" />
        </div>
</div>
 
 
 
countModules('header')) : ?>
<div id="header">
    <jdoc:include type="modules" name="header" style="xhtml" />
</div>
 
 
 
 
countModules('user2 or user3')) : ?>
countModules('user2')) : ?>
<div id="user2">
    <jdoc:include type="modules" name="user2" style="xhtml" />
</div>
 
 
countModules('user3')) : ?>
<div id="user3">
    <jdoc:include type="modules" name="user3" style="xhtml" />
</div>
 
 
 
    <div id="maincolumn_full">
        <div class="top_full">
            <div class="bottom_full">
                        <jdoc:include type="message" />
                        params->get('showComponent')) : ?>
                            <jdoc:include type="component" />
                        
            </div>
        </div>
    </div>
<div id="userall">
    <div id="breadcrumbs">
        <jdoc:include type="modules" name="breadcrumb" style="raw" />
    </div>
</div>
<div id="userall">
    <table width="980">
        <tr>
        countModules('user4 or user5 or user6')) : ?>
            countModules('user4')) : ?>
                <td>
                    <jdoc:include type="modules" name="user4" style="raw" />
                </td>
            
 
            countModules('user5')) : ?>
                <td>
                    <jdoc:include type="modules" name="user5" style="raw" />
                </td>
            
 
            countModules('user6')) : ?>
                <td>
                    <jdoc:include type="modules" name="user6" style="raw" />
                </td>
            
        
        </tr>
 </table>
</div>
 
<div id="userall">
<div id="user7">
    <jdoc:include type="modules" name="user7" style="xhtml" />
</div>
</div>
<div id="userall">
<div id="footer">
    <div id="footer_holder">
        Powered by <a href="http://www.joomlathaiclub.com/" target="_blank">Joomla!</a> 
and designed by joomlathaiclub <a href="http://www.joomlathaiclub.com/" target="_blank">joomla thai</a>
    </div>
</div>    
</div>    
</div>
<div id="userall">
    <div id="debug">
        <jdoc:include type="modules" name="debug" style="none" />
    </div>
</div>
</body>
</html>

 

css ของ ie6

View source
  1. /*////////// GENERAL //////////*/
  2. body {
  3.     margin: 0 auto;
  4.     height: 0 auto;
  5. font-family: Tahoma, Verdana, Arial, sans-serif;
  6.     line-height: 1.3em;
  7.     font-size: 11px;
  8.     color: #666666;
  9.     background: #fff;
  10. }
  11. /*////////// TYPEOGRAPHY //////////*/
  12. h1, h4, h2, h3{
  13. font-family: Georgia, Times, serif;
  14. }
  15. h1, h2, h3, h4, h5, h6,
  16. h1 a, h2 a, h3 a, h4 a, h5 a, h6 a
  17. h1 a:hover, h2 a:hover, h3 a:hover, h4 a:hover, h5 a:hover, h6 a:hover
  18. h1 a:visited, h2 a:visited, h3 a:visited, h4 a:visited, h5 a:visited, h6 a:visited
  19. {
  20. font-weight: normal;
  21. font-style: normal;
  22. text-decoration: none;
  23. }
  24. a img, a img.preview {
  25. border: none;
  26. text-decoration: none;
  27. }
  28. /*////////// HEADERS //////////*/
  29. .logo {
  30.     position:absolute;
  31.     top:26px;
  32.     right:0;
  33.     width:800px;
  34.     height:25px;
  35.     padding:0;
  36.     margin:0;
  37.     overflow:hidden;
  38. text-align:right;
  39. }
  40. #page_bg {
  41.     background: #fff url(../images/page_bg.png) repeat-x top left;
  42. }
  43. #header {
  44.     padding-top: 118px;
  45.     margin: 5px;
  46.     height: 0 auto;
  47. }
  48. #header1 {
  49.     position:relative;
  50.     margin:0 auto;
  51.     height:301px;
  52.     width:744px;
  53.     padding:64px 0 0 216px;
  54.     background: transparent url(../images/headerimg.jpg) no-repeat top center;
  55. }
  56. #headerimage {
  57.     position:absolute;
  58.     top:0;
  59.     left:0;
  60.     width:216px;
  61.     height:365px;
  62.     background: transparent url(../images/img.jpg) no-repeat top left;
  63. }
  64. /*////////// CONTENT //////////*/
  65. #content {
  66.     margin-top: auto;
  67. margin: 2%
  68. }
  69. #mainbody {
  70. margin: 5px;
  71. }
  72. #user1 {
  73. margin: 0 auto;
  74. }
  75. #user2 {
  76. margin: 0 0 0 14%;
  77. min-width: 375px;
  78.     max-width: 480px;
  79.     height: 0 auto;
  80. float: left;
  81. margin-bottom: 2%;
  82. }
  83. #user3 {
  84. margin: 0 0 0 14%;
  85. min-width: 375px;
  86.     max-width: 480px;
  87.     height: 0 auto;
  88. float: left;
  89. margin-bottom: 2%;
  90. }
  91. #userall {
  92. margin: 0 0 0 14%;
  93. }
  94. #breadcrumbs {
  95. height: 33px;
  96. margin: 5px;
  97. width:770px;
  98. padding-left: 32px;
  99. padding-top: 8px;
  100. background: url(../images/homei.gif) 0 0 no-repeat;
  101. }
  102. /*////////// SIDEBARS //////////*/
  103. /*////////// NAV //////////*/
  104. #maincolumn_full {
  105.     width:960px;
  106.     margin: 0 0 0 14%;
  107.     background: transparent url(../images/content_m_full.gif) repeat-y top center;
  108. }
  109. .top_full {
  110.     background: transparent url(../images/content_t_full.gif) no-repeat top center;
  111. }
  112. .bottom_full {
  113.     padding: 10px;
  114.     background: transparent url(../images/content_b_full.gif) no-repeat bottom center;
  115. }
  116. /*////////// FORMS //////////*/
  117. /*////////// FOOTER //////////*/
  118. #footer {
  119. width:960px;
  120.     height:44px;
  121.     text-align:center;
  122.     margin:0 0 20px;
  123.     background: transparent url(../images/footer.png) no-repeat top center;
  124. }
  125. #footer_holder {
  126.     height:26px;
  127.     width:936px;
  128.     color: #fff;
  129.     font-weight:400;
  130.     line-height: 25px;
  131. padding:0 12px;
  132.     margin:0 auto;
  133.     overflow:hidden;
  134. }
  135. #footer a {
  136.     color: #fff;
  137.     font-weight:400;
  138.     text-decoration: none;
  139. }
  140. #footer a:hover {
  141.     text-decoration:underline;
  142. }
  143. a.footer123:link, a.footer123:visited {
  144.     color: #000;
  145.     font-family: Tahoma, Arial, sans-serif;
  146.     text-decoration: underline;
  147. }
  148. #f123 {
  149.     text-align: right;
  150.     width: 100%;
  151.     margin: 0 auto;
  152.     font-family: Tahoma, Arial, sans-serif;
  153. }
  154. .f123 {
  155.     text-align: right;
  156.     font-family: Tahoma, Arial, sans-serif;
  157.     text-decoration: none;
  158. }
  159. .f123_bg {
  160.     background:url(../images/123_bg.png);
  161.     width:134px;
  162.     height:30px;
  163.     text-align:center;
  164.     padding: 0 3px;
  165. }
  166. .f123_1 {
  167.     display: block;
  168.     font-size: 10px;
  169.     font-family: Tahoma, Arial, sans-serif;
  170.     color: #666;
  171.     text-align: left;
  172.     padding: 0 0 2px 4px;
  173. }
  174. a.link_123:link, a.link_123:visited {
  175.     font-size: 15px;
  176.     font-family: Tahoma, Verdana,Arial,Helvetica,sans-serif;
  177.     color: #797979;
  178.     text-decoration:none;
  179.     font-weight: 700;
  180. }
  181. a.link_123:hover {
  182.     font-size: 15px;
  183.     font-family: Tahoma, Verdana,Arial,Helvetica,sans-serif;
  184.     color: #797979;
  185.     text-decoration:none;
  186.     font-weight: 700;
  187. }
  188. #debug {
  189. padding: 2px
  190. }
  191. /*////////// IMAGES //////////*/

จริง ๆ ไม่ต้องหยิบ css มาจาก css หลักมาทั้งหมด เอามาเฉพาะส่วนที่แสดงผลผิดเพี้ยนเท่านั้นก็พอครับ

 

multiple IE โปรแกรมที่บรรจุ Internet Explorer หลาย ๆ เวอร์ชั่นเอาไว้ข้างใน ทำให้คุณสามารถใช้ ie หลายๆ เวอร์ชั่นเพื่อทดสอบเว็บไซต์ได้ในเครื่องเดียวกัน ดูรายละเอียดเพิ่มเติมที่นี่ http://tredosoft.com/Multiple_IE

 

เมื่อดูในทุกเบราเซอร์ลงตัวดีแล้ว จากนั้นก็มาสร้างรูปย่อ สำหรับ template โดยใช้โปรแกรม photoshop ขนาดรูปไม่ต้องใหญ่นักประมาณ 200*150px บันทึกเป็นไฟล์ชื่อ template_thumbnail.png เก็บไว้ในโฟล์เดอร์เดียวกัน

 

 

 

จากนั้นก็สร้างรายชื่อไฟล์ ว่าใน template มีไฟล์อะไรมั่ง เพื่อใช้ในการติดตั้ง แล้วทำการบันทึกรายชื่อไฟล์ต่าง ๆ ที่มีใน template ไว้ใน templateDetails.xml

 

บางท่านอาจจะมีไฟล์รูปภาพเยอะมาก อาจจะตกหล่นในการเก็บรายชื่อ มีเครื่องมือที่ช่วยลิสต์รายชื่อไฟล์ ให้ก็อปปี้โค๊ดด้านล่างแล้ว เซฟเป็นไฟล์ชื่อ remove.php

 

View source
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org
/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>templateDetails.xml generator REMOVE PRIOR TO PACAKGING!!</title>
    </head>
    <body>
<h2>Remove this file prior to packaging your template!</h2>    
 
<?php
 
$dir="html"; // change this to template directory where files are stored. "." = root.
 
if ($dir_list = opendir($dir)){
 
 if ($dir == "."){
      $dir = "";
    }else{
      $dir = $dir."/";
    }//if/else
 
    while(($filename = readdir($dir_list)) !== false){
    if ($filename != ".DS_Store" && $filename != "." && $filename != ".." && $filename != "remove.php" 
&& $filename != "css" && $filename != "html" && $filename != "images" && $filename != "js"){
    ?>
 
&lt;filename&gt;&lt;/filename&gt;<br/>
 
<?php
    }//if
 }//while
closedir($dir_list);
}//if
 
?>
 
 
</body>
</html>
 

 

 

นำไปวางไว้ในโฟล์เดอร์ของ template จากนั้นก็รันไฟล์นี้ผ่านทางเบราเซอร์ แก้ไขส่วนนี้นิดหน่อยเพื่อให้เข้าไปลิสต์รายชื่อไฟล์ในโฟล์เดอร์ที่ลึกกว่า นี้

View source
$dir="html"; // change this to template directory where files are stored. "." = root.

 

แก้ไขที่ “html” ให้เป็นชื่อโฟล์เดอร์ที่ต้องการจะลิสต์รายชื่อไฟล์ หรือกำหนด เป็น (.) จุด เพื่อเป็น root โฟล์เดอร์

 

 

ก็จะแสดงผลลิสต์รายชื่อไฟล์ออกมาให้แถมใส่แท็กคำสั่งให้อีกต่างหากก็ทำ การก็อปปี้รายชื่อไฟล์ดังกล่าวมาใส่ไว้ในไฟล์ templateDetails.xml

 

 

 

จากนั้นก็ทำการบีบไฟล์ทั้งหมดให้เป็นไฟล์ซิป (zip)

 

 

 

 

จากนั้นก็ลองติดตั้งดู

 

 

 

ถ้าขึ้น Install Template Success ก็แสดงว่าผ่าน ถ้า error ลองตรวจสอบว่าไฟล์อะไรขาดไปหรือเปล่าครับ

จบครับ ขอให้สนุกกับการออกแบบเว็บไซต์

 

 

tip

 

การแทรกไฟล์แฟลชให้แสดงใน template

View source
<div id="flashHeader">
<object data="/templates/
/green-flash-sample.swf" 
 type="application/x-shockwave-flash" 
 width="320" 
 height="75" 
 FlashVars="itemID="> 
 <param name="movie" value="
/templates//green-flash-sample.swf" /> 
 <param name="menu" value="false" /> 
 <param name="FlashVars" value="itemID="/>  
 <param name="wmode" value="transparent" /> 
 <param name="quality" value="best" /> 
</object>

* เท่าที่ผมสังเกตุดูหน้าเพจที่มี แฟลชนั้นค่อนข้างจะกินกำลัง cpu ของเครื่องผู้ใช้พอสมควร อาจจะสักประมาณ 60-90 เปอร์เซ็นต์เลยที่เดียว นั้นก็อาจจะเป็นเหตุผลหนึ่งที่ทำให้ดูอืด ๆ เลื่อนหน้าเพจขึ้นลงก็รู้สึกหน่วง ๆ ทำให้ดูเหมือนเว็บอืด เพื่อไม่ให้หน้าเว็บโหลดช้าหรืออืด แบบเต่าแรกพี่ ก็ควรหลีกเลี้ยงการใช้ แฟลชเป็นหัวเว็บ (header) ใช้โมดูลที่เป็นรูปสไลด์จะทำให้หน้าเพจโหลดได้เร็วมากกว่าใช้ แฟลช

css (หรือไม่จำเป็นต้องใช้ css ก็ได้)

View source
#flashHeader{
    margin: 0;
    margin-top: 1px;
    width: 320px;
    height: 75px;
}

เปลี่ยนตรงชื่อไฟล์แฟลช green-flash-sample.swf เป็นของคุณเอง กำหนดความกว้างความสูงตามชอบใจ

 

ดาวน์โหลด template ชุดสุดท้าย (ทำเสร็จแล้ว)

 

ดาวน์โหลด template ชุดสุดท้าย

ไฟล์สคริปสำหรับลิสต์รายชื่อไฟล์

 

ไฟล์สคริปสำหรับลิสต์รายชื่อไฟล์ remove