พบกับบทความเกี่ยวกับคอมพิวเตอร์และ programming ได้ที่ http://articles.modoeye.com
PHP development / เปลี่ยมเทมเพลทเว็ปได้
เมธี
เมธี
Fri 29 Dec 2006 11:23:21

พี่รับช่วยดูโค้ดให้ที ครับ คือผมลองทำเวปให้ เปลี่ยมเทมเพลทเว็ปได้

โดยผมให้ GET ค่า เทมเพลทจากบราวเซอร์ ได้เป็น

index.php?style=1  เทมเพลท 1
 index.php?style=2   เทมเพลท 2
index.php?style=3   เทมเพลท 3

 ไฟล์ style.php

<?
 
###################################
 $style_1 =  "style_default_theme"; 
 $style_2 =  "style_extream_theme"; 
 $style_3 =  "style_sunflower_theme";   
###################################
 
 
if($_GET["style"]=='1') {
       $webstyle = $style_1;
            }
else if($_GET["style"]=='2') {
      $webstyle = $style_2; 
     }
else if($_GET["style"]=="3"){
         $webstyle = $style_3;
       }
else if($_GET !=""){
       $webstyle = $style_3;  //
  }

?>

ไฟล์ template ก็มีไปแต่ละตัวครับ
style_default_theme
style_extream_theme
style_sunflower_theme

==========================
คือ จะ ใช้ cookie หรือ session  รับค่าที่ GET ไว้ยังไงครับให้มันจำค่า ที่ได้ GET เทมเพลทแต่ละอันไปตลอดครับ อย่าง register.php&style=1 หรือ register.php&style=2 ในแต่ละเทมเพลทหรือในแต่และไฟล์ครับแนะนำด้วยครับ

Davinci
Davinci
Sat 30 Dec 2006 18:44:49

if($_GET["style"]=='1') {
       $webstyle = $style_1;
    SetCookie("cookie_name_style",$webstyle,time()+2592000);
     }
else if($_GET["style"]=='2') {
      $webstyle = $style_2; 
   SetCookie("cookie_name_style",$webstyle,time()+2592000);
     }
else if($_GET["style"]=="3"){
         $webstyle = $style_3;
   SetCookie("cookie_name_style",$webstyle,time()+2592000);
       }
else if($_GET !=""){
       $webstyle = $style_3;  //
    SetCookie("cookie_name_style",$webstyle,time()+2592000);
  }

ลองดูครับ

เมธี
เมธี
Sat 30 Dec 2006 20:39:51

ไม่ได้ครับพี่ท่าน หรือว่าต้อง setcookie ใน หน้าแรกด้วย
ไฟล์  index.php
<? 
###################################
 include('connect_db.php');
 include('connect_config.php');
 include('style.php');
  if(($mode=="admin") or ($mode=="user")) {
  include('admin_chk.php');
 }
?>
<html>
<head>
<title><?=$cf_title;?></title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874">
<? $version = "LMS2.0.2 [st]"; ?>
<SCRIPT language=JavaScript src="_javascript.js"></SCRIPT>
<script language="Javascript1.2"><!-- // load htmlarea
_editor_url = "";                     // URL to htmlarea files
var win_ie_ver = parseFloat(navigator.appVersion.split("MSIE")[1]);
if (navigator.userAgent.indexOf('Mac')        >= 0) { win_ie_ver = 0; }
if (navigator.userAgent.indexOf('Windows CE') >= 0) { win_ie_ver = 0; }
if (navigator.userAgent.indexOf('Opera')      >= 0) { win_ie_ver = 0; }
if (win_ie_ver >= 5.5) {
  document.write('<scr' + 'ipt src="' +_editor_url+ 'editor.js"');
  document.write(' language="Javascript1.2"></scr' + 'ipt>'); 
} else { document.write('<scr'+'ipt>function editor_generate() { return false; }</scr'+'ipt>'); }
// --></script>
<style type="text/css">
<!--
body {  margin: 0px  0px; padding: 0px  0px}
a:link { color: #005CA2; text-decoration: none}
a:visited { color: #005CA2; text-decoration: none}
a:active { color: #0099FF; text-decoration: underline}
a:hover { color: #0099FF; text-decoration: underline}
-->
</style>
</head>
<?
 include($webstyle .".php");
?>
</html>

===================

ไฟล์ style.php

<?
 
###################################
 $style_1 =  "style_default_theme"; 
 $style_2 =  "style_extream_theme"; 
 $style_3 =  "style_sunflower_theme";   
###################################
 

if($_GET["style"]=='1') {
       $webstyle = $style_1;
    SetCookie("cookie_name_style",$webstyle,time()+2592000);
     }
else if($_GET["style"]=='2') {
      $webstyle = $style_2; 
   SetCookie("cookie_name_style",$webstyle,time()+2592000);
     }
else if($_GET["style"]=="3"){
         $webstyle = $style_3;
   SetCookie("cookie_name_style",$webstyle,time()+2592000);
       }
else if($_GET !=""){
       $webstyle = $style_3;  //
    SetCookie("cookie_name_style",$webstyle,time()+2592000);
  }

?>

Davinci
Davinci
Sat 30 Dec 2006 21:13:34

<?
 
###################################
 $style_1 =  "style_default_theme"; 
 $style_2 =  "style_extream_theme"; 
 $style_3 =  "style_sunflower_theme";  
###################################
 
if($cookie_name_style){
 $webstyle=$cookie_name_style;
}

if($_GET["style"]=='1') {
       $webstyle = $style_1;
    SetCookie("cookie_name_style",$webstyle,time()+2592000);
     }
else if($_GET["style"]=='2') {
      $webstyle = $style_2; 
   SetCookie("cookie_name_style",$webstyle,time()+2592000);
     }
else if($_GET["style"]=="3"){
         $webstyle = $style_3;
   SetCookie("cookie_name_style",$webstyle,time()+2592000);
       }
else if($_GET !=""){
       $webstyle = $style_3;  //
    SetCookie("cookie_name_style",$webstyle,time()+2592000);
  }

?>

ลองดูอีกทีครับ

เมธี
เมธี
Mon 1 Jan 2007 19:16:22

 if($cookie_name_style){
 $webstyle=$cookie_name_style;
}
if($_SESSION['style'] == '1'){
//if($_GET["style"]=='1') {
       $webstyle = $style_1; 
 setcookie("cookie_name_style", $webstyle, time()+(3600 * 24 * 365)); # สร้าง cookie
 
     }
//else if($_GET["style"]=='2') {
else if($_SESSION['style'] == '2') {
      $webstyle = $style_2; 
    setcookie("cookie_name_style", $webstyle, time()+(3600 * 24 * 365)); # สร้าง cookie
 
     }
else if($_SESSION['style'] == '3') {
        $webstyle = $style_3;
 setcookie("cookie_name_style", $webstyle, time()+(3600 * 24 * 365)); # สร้าง cookie
 
       }
else if($_SESSION !=""){
       $webstyle = $style_3;  //
  setcookie("cookie_name_style", $webstyle, time()+(3600 * 24 * 365)); # สร้าง cookie
 
  }

ผมลองมาใช้ SESSION  ได้นะครับพี่ Davinci แต่ภาพ ไม่ชึ้นเลยครับไม่รุ้ว่า เพราะอะไรครับ

Davinci
Davinci
Mon 1 Jan 2007 21:23:16
ภาพไม่ขึ้น path ผิดรึป่าวครับ ว่าแต่โค๊ดคุณเมธีดูแล้วชวนปวดหัวดีเน๊อะ มีทั้งคุ๊กกี้มีทั้งเซ็กชั่น
เมธี
เมธี
Tue 2 Jan 2007 11:20:55
อืม ครับ แบบว่า ไม่ถนัดเลยจริงๆๆอะครับพี่ท่านเรื่งอเขียนโปรแกรมครับ แต่ทำไงได้ครับ ใจมันอยากรู้จริงๆๆ ขอรับ
Davinci
Davinci
Tue 2 Jan 2007 13:32:10
ไม่นานก็เก่งเองแหละครับ ยิ่งเจอปัญหามากยิ่งเก่งเร็ว ชื่นชมจากใจครับ
Davinci
Davinci
Tue 2 Jan 2007 13:34:20
คุณเมธีนี่ใช้เน็ต ipstar รึป่าวครับ
เมธี
เมธี
Tue 2 Jan 2007 18:50:15
ใช่ ครับท่านพี่  แต่ ห่วยจิงๆ ครับ .......
<? ISAN_LANG
 
 หลุด ไม่หวาดไม่หวั่น โทรไปแจ้งก็เสย ภาษาลาวบ้านผมนะ 55 นอกเรื่องไป ?> 
(-_-) แต่ยังไงก็ขอบคุณเสมอๆๆครับ สำหรับที่นี่อาจจะได้คำตอบที่ตรงๆๆบ้างหรือ อ้อมๆๆ บ้างก็เป็นเรื่องธรรมดา ที่นี่ให้ความรู้เยอะอีกที่หนึ่ง ขอบคุณมากๆๆครับ เดี่ยวผมทำได้จะเอามาโชว์ ท่านพี่ Davinci นะครับ
Administrator
Fri 5 Jan 2007 11:15:58
ไม่ลองทำการสร้าง template ไว้โดยเขียนเป็น section (อธิบายยากแฮะ ลองสมัครใช้งาน blogger แล้วดูโครงสร้างของเขาดูครับ) เป็นการเขียนโครงสร้างแล้วก็ replace ด้วยค่าที่เราต้องการ โดยค่าที่ตั้งไว้ทั้งหมดถูกบันทึกลง db ทั้งหมด หรือไม่ก็สร้าง element ของเว็บไซท์เก็บลง db เป็น template ต่างๆ แต่ต้อง advance เรื่องโครงสร้าง db หน่อยครับ ส่วนตัวไม่เคยลองทำครับ
เมธี
เมธี
Fri 5 Jan 2007 14:27:31
พี่ มาสเตอร์ ครับ อืม ผมขอ ลองให้พี่มาสเตอร์ ให้แนวคิดหน่อยครับ หากว่า ท่านจะสร้างเทมเพลทไว้ใช้งาน มาสเตอร์ จะ ใช้หลักการยังไง บ้าง ครับ  เผื่อเป็นแนวทางในการพัฒนานะครับ โดยตรงแล้ว ผม เขียน ไม่ค่อยเป็นเท่าไหร่ ครับ php แต่ อยากรู้ จริงๆ เอาแบบว่า  ไม่ต้องเขียนเป็น class นะครับ เอาแบบธรรมดา พอจะได้ไหมครับ ต้องรบกวนท่านอีกครั้ง ครับ
 best regards
Administrator
Fri 5 Jan 2007 19:26:01
เท่าที่ผมเห็นและดูแล้วเข้าท่าที่สุดคือ เขียน template ไว้เช่น

{[header_section]}
{[content_section]}
{[footer_section]}

จากนั้นก็ replace ด้วยค่า template ที่ต้องการครับ เช่น
preg_replace("/({[[a-z_]]})/", $template, $source);

ประมาณนี้ครับ

อีกวิธีก็เขียน template แล้วเก็บลง db ครับ เช่น
_________________________________________
| templateid | section |                   datatext                   |
-------------------------------------------------------
|      1         |  header | <div style="color:#FF0000;">...|
-------------------------------------------------------
|      2         |  header | <div style="colot:#E2E2E2;">...|
-------------------------------------------------------
|      3         |  header | <div style="colot:#000055;">...|


วิธีนี้ใช้พลังของ db เยอะมากแต่ก็ดูยืดหยุ่นมากครับ

จากที่ผมดูโค๊ดนี้น่าจะหมายถึง visitor สามารถเปลี่ยน template ได้เองใช่หรือไม่ครับเนื่องจากเห็นว่าใช้ Cookie และ Session ในการเก็บค่าต่างๆ ซึ่ง policy แบบนี้ผมยังไม่เคยเห็นเหมือนกันครับ

ปล. ยังไม่เคยเขียนใช้งานจริงครับ
Reply
Name:
E-mail:
Home | Services | Forum | Classified | Directories | Support | Contact
ATOM feed RSS 0.9 feed RSS 1.0 feed RSS 2.0 feed
Copyright © 2005 - 2007 Modoeye.com, All Rights Reserved.
Disclaimer | Privacy policy | Term of Use | Term of Services
Valid XHTML Valid CSS! PHP: Hypertext Preprocessor MySQL database Apache Powered! FreeBSD Power to serve
Modoeye Sitemap Client login