-->

บทที่ 5 สร้าง Landing Page product.php และ css

สร้าง Landing Page product.php และ css

บทที่ 5 สร้าง Landing Page product.php และ css

เอาละครับ นี่ก็บทที่ 5 แล้ว บทนี้ที่ออกมาช้าหน่อยเนื่องจากที่ว่าผมงานเยอะครับ งานบริษัทนี่แหละครับ ขอแอบบ่นนิดนึง 

สำหรับบทนี้ผมจะพาเขียนการดึงสินค้ามาแสดงนะครับ ซึ่งจะดึงมาโดยให้มีการออกแบบ Landing Page หลายๆไฟล์ครับ ให้มีความต่างกันเลย ไหนๆก็ไหนๆละครับ ให้ทำแบบธรรมดาได้ไงละ

เริ่มจากต้องสร้างไฟล์ product.php ขึ้นมาก่อน 1 ไฟล์นะครับ

ไฟล์ product.php เป็นไฟล์แสดงสินค้า ที่ใช้ค่า id ในการดึงสินค้ามาแสดงข้อมูล และใช้ค่า id ไปดึงข้อมูลจาก data.csv ซึ่งค่า id จะเป็นค่าลำดับบรรทัดนั่นเองครับ




เริ่มจาก Include File app.php มาก่อนนะครับ เพราะว่าเราต้องเรียกใช้ function() มาใช้งานครับ

<?php 

//Include Function File
include 'app.php';

?>

หลังจากนั้น ก็วางโครงสร้างเว็บ เหมือน index.php เลยครับ เพราะว่าเราไม่ต้องไปเขียน CSS เพิ่มมาอีกครับ
<?php 

//Include Function File
include 'app.php';

?>

<!DOCTYPE html>
<html lang="en">

 <head>

  <meta charset="UTF-8">
  <title><?php echo setting('sitename'); ?></title>
  <meta name="description" content="<?php echo setting('sitedes'); ?>">
  <meta name="keywords" content="<?php echo setting('keyword'); ?>">
  <meta name="author" content="<?php echo setting('author'); ?>">

    <link rel="stylesheet" href="styles.css?v=1.0">

    <!--[if lt IE 9]>
     <script src="https://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->

 </head>

 <body>
  <div id="wrapper">

   <header>
    <h1><?php echo setting('sitename'); ?></h1>
    <h2><?php echo setting('sitedes'); ?></h2>
    <nav>
                    <ul>
                        <li><a href=".">HOME</a></li>
                        <li><a href="#">Product</a></li>
                        <li><a href="#">Contact</a></li>
                    </ul>
                </nav>
   </header>

   <div id="primary_content">
    <section id="left_column">
                    <h3>Random Product</h3>
                </section>

                <section id="right_column">

                 <article>
                  <?php echo landingpage($id); ?>
                 </article>

                    <?php relatedproduct(6); ?>
                </section>
   </div>

   <div class="clear"></div>
   <footer>
    <p><?php echo setting('sitename'); ?></p>
   </footer>

   <div class="clear"></div>

  </div>
 </body>

</html>

เหมือนไฟล์ index.php เปะครับ และผมจะใช้ relatedproduct(6); เป็น Related Product เลย แต่ที่ไฟล์ product.php นี้จะเพิ่มมาคร่าวๆ คือ ข้อมูลสินค้าที่ลิงค์มาครับ หรือพูดง่ายๆคือ หน้าที่โดนเรียกค่า id มานั่นเองครับ

รับค่า id สินค้า

ไฟล์ product.php จะรับค่า id ด้วย $_GET[] นะครับ $_GET นี่สังเกตง่ายๆ คือค่าที่แสดงใน Link นั่นแหละครับ ประมานว่า tempkaew/product.php?id=10 เวลารับค่าก็จะประมาน $_GET['id'] ซึ่งจะได้ค่า 10 มาใช้งานแล้วครับ

เริ่มเขียนการรับค่า id กันดีกว่าครับ

//Check ID 
if (isset($_GET['id'])) {

 $id   = $_GET['id'];
 $list = explode("-",$id);
 $id   = $list[0];

 if (is_numeric($id) AND $id>=0 AND $id<=maxline()) {
  $id = $id;
 }else{
  $id = randid();
 }

}else {
 $id = randid();
}

อธิบายพอสังเขป
คอนเซ็ป ผมคือการเช็คว่ามีการส่งค่า id มาไหม ไม่มีก็ให้ random ค่า id มา 1 ค่า หลังจากเช็คเรื่องการส่งค่ามาแล้ว ก็ดูอีกว่าส่งค่ามาแล้ว ตรงตามเงื่อนไขต่อไปของเราไหม โดยจะเช็คต่อว่า ค่า id ที่รับมานั้น เป็นตัวเลขไหม มีค่าติดลบไหม มีค่าเกินค่าข้อมูลหรือว่าเกินกว่าข้อมูลทั้งหมดไหม แล้วจึงกำหนดค่า id ครับ เป็นการตั้งรับหลายๆกรณีไว้ก่อนนะครับ

การเช็คค่าว่ามีการส่งค่ามาไหม ผมจะใช้การ if(isset()) ถ้ามีการกระทำ ผมคิดว่ามันหมายความว่าอย่างนี้แหละครับ หลังจากนั้นก้อเช็คเรื่องตัวเลขต่อ  is_numeric() เป็นตัวเลขไหม และใช้ AND ในการเช็คทั้งหมด คือต้องให้ผ่านทุกกรณีครับ ทั้ง 3 กรณีต้องผ่าน หลุดตัวไหนตัวนึง ก็จะไป random id มาครับ

แก้ไขเพิ่มเติม
ตัวนี้ผมปรับขึ้นมาใหม่นะครับ เนื่องจากว่าการ Get['id'] มามันจะขึ้น id-title มาเลย ผมจึงเพิ่มเจ้า explode() ขึนมา เพื่อแยกข้อมูล และจะเอา $list[0] หรือว่าข้อมูลที่ได้จากการแยกตัวแรกนั่นเองครับ ก็คือค่า id ตัวเลขของเราครับ

อ้อ ตัวนี้ผมเพิ่ม function randid มาใน app.php ครับ

//Random ID Product
function randid()
{
 $id = rand(0,maxline());
 return $id;
}

เพิ่มเข้าไปดูนะครับ ที่ท้ายบทความจะใส่ไฟล์รวม app.php อีกรอบครับ

Landing Page

เอาละครับเช็คค่า id สินค้าเรียบร้อยแล้ว ต่อไปก็จะเป็นเรื่องของ Landing Page แล้วละครับ ผมเขียน function landingpage($id) ขึ้นมาครับ คอนเซ็ปง่ายๆคือ เอาค่า id ไปดึงข้อมูลมานั่นเอง แต่ที่สำคัญคือ function landingpage() ตัวนี้ สามารถดึงข้อมูลที่โดนออกแบบหน้า Landing Page จากหลาย Landing Page นั่นเอง ซึ่งตัวไฟล์ Landing Page ผม บันทึกไว้เป็นไฟล txt ครับ น่าจะง่ายที่สุดละ ชื่อไฟล์ ตั้งอย่างไรก็ได้ครับ อยู่ที่คนอยากตั้งครับ

function landingpage($id) ใน app.php


//Landing Page in product.php
function landingpage($id)
{
 //Random Landing Page
 $mylp   = glob("lp/*.txt"); 
 $randlp = rand(0,count($mylp)-1);
 
 $filelp = $mylp[$randlp];
 $getlp  = file_get_contents($filelp);
 
 //Product Data from data.csv
 $file   = file(setting('file'));
 $data   = explode(',', $file[$id]);
 $title  = trim($data['0'], '"');
 $link   = trim($data['1'], '"');
 $img    = trim($data['2'], '"');
 
 $lp     = str_replace("{get title}",$title,$getlp);
 $lp     = str_replace("{get link}",$link,$lp);
 $lp     = str_replace("{get img}",$img,$lp);

 return $lp;
}

อธิบายพอสังเขป

glob() เป็น function หาไฟล์หรือ directory ที่เข้ารูปแบบที่กำหนด ในที่นี่ผมให้หาไฟล์ นามสกุล txt ในโฟลเดอร์ lp ครับ อย่างที่กล่าวด้านบน ไฟล์ Landing Page เอาไว้ที่โฟล์เดอร์ lp ทั้งหมดครับ ไฟล์ txt นะครับ แล้ว function landingpage($id) ก็จะเรียกโดนการ Random มาแสดงครับ

บรรทัด 18-20 คืออะไรครับ เป็นการแทนค่าคำที่ต้องการครับ str_replace(คำค้นหา, แทนค่าด้วย, ในบทความของ); ประมานนี้นะครับการทำงานของมัน อย่างบรรทัน 18 ผมจะแทนค่า  {get title} ด้วย $title ที่ดึงมาจากสินค้าครับ โดยให้มันไปหาจาก $getlp ซึ่งเป็นตัวที่เรา Random Landing Page มานั่นเอง

พูดง่ายๆคือ ต้องมีไฟล์ Landing Page ที่เป็นไฟล์ txt ไว้ใน โฟลเดอร์ lp เพื่อให้ function landingpage($id) ไปดึงมาแสดงครับ

Landing Page TXT File

ไฟล์ txt ที่อยู่ในโฟลเดอร์ lp อาจจะออกแบบอย่างตัวอย่างนี้ก็ได้ครับ ซึ่งสามารถใส่ เป็น html code ได้ปกติครับ

Landing Page 1
<h1>{get title}</h1>
<h2>Shopping {get title} Reviews</h2>
<p><img src="{get img}"></p>
<p>
{get title} will become useful. And hope Now i am a section of helping you to get a superior product.On the other hand, I hope until this reviews about it Deal {get title} form Deals  will always be useful. And hope Now i'm a section of letting you get a superior product. You will obtain a review and practical knowledge form here. I'm hoping you will ensure and get Cheap {get title} following read this review. You will get a review and expertise form here. I really hope you will ensure Low Price <b>{get title}</b>. right after read this review
You'll be amazed to see how convenient this product could be, and you will certainly feel good realizing that this {get title} is amongst the best selling object in currently.
</p>
<a href="{get link}">Click Go to Shop</a>

ที่ Landing Page 1 เพราะอยากรู้เฉยๆว่า Landing Page อะไรเท่านั้นครับ ฮ่าๆ ใส่อย่างไร แสดงอย่างนั้นครับ
ตัวอย่าง Landing Page ที่ยกตัวอย่างมาครับ 

ผมสร้าง Landing Page 2 ไฟล์ไว้นะครับ

สรุปไฟล์

ไฟล์ product.php ที่ปรับปรุงแล้ว
<?php 

//Include Function File
include 'app.php';

//Check ID 
if (isset($_GET['id'])) {

 $id   = $_GET['id'];
 $list = explode("-",$id);
 $id   = $list[0];

 if (is_numeric($id) AND $id>=0 AND $id<=maxline()) {
  $id = $id;
 }else{
  $id = randid();
 }

}else {
 $id = randid();
}

?>

<!DOCTYPE html>
<html lang="en">

 <head>

  <meta charset="UTF-8">
  <title><?php echo setting('sitename'); ?></title>
  <meta name="description" content="<?php echo setting('sitedes'); ?>">
  <meta name="keywords" content="<?php echo setting('keyword'); ?>">
  <meta name="author" content="<?php echo setting('author'); ?>">

    <link rel="stylesheet" href="styles.css?v=1.0">

    <!--[if lt IE 9]>
     <script src="https://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->

 </head>

 <body>
  <div id="wrapper">

   <header>
    <h1><?php echo setting('sitename'); ?></h1>
    <h2><?php echo setting('sitedes'); ?></h2>
    <nav>
                    <ul>
                        <li><a href=".">HOME</a></li>
                        <li><a href="#">Product</a></li>
                        <li><a href="#">Contact</a></li>
                    </ul>
                </nav>
   </header>

   <div id="primary_content">
    <section id="left_column">
                    <h3>Random Product</h3>
                </section>

                <section id="right_column">
                 <article>
                  <?php echo landingpage($id); ?>
                 </article>
                    <?php relatedproduct(6); ?>
                </section>
   </div>

   <div class="clear"></div>
   <footer>
    <p><?php echo setting('sitename'); ?></p>
   </footer>

   <div class="clear"></div>

  </div>
 </body>

</html>

ไฟล์ app.php ที่ปรับปรุงแล้ว


<?php

//Setting 
function setting($value)
{
 $setting = array(
    'sitename' => 'TempKaew',
    'sitedes'  => 'Shopping At TempKaew',
    'keyword'  => 'shop, myshop, top shop',
    'author'   => 'Kaew',
    'file'     => 'data.csv'
    );
 return $setting[$value];
}


//Get IMg + Title From CSV File
function boxproduct($id){
 $file  = file(setting('file'));
 $data  = explode(',', $file[$id]);
 
 //First Data
 $title = trim($data['0'], '"');
 $link  = trim($data['1'], '"');
 $img   = trim($data['2'], '"');

 //Design your Box Product
 $box = '
 <div class="box">
  <div class="inbox">
   <p class="img">
    <img src="'.$img.'">
   </p>
   <p class="title"><a href="product-'.$id.'">'.$title.'</a></p>
  </div>
 </div>';

 return $box;
}

//Check Max Line File data.csv
function maxline()
{
 $maxline = count(file(setting('file')))-1;
 return $maxline;
}

//Related Product
function relatedproduct($loop)
{
 for ($i=0; $i < $loop; $i++) { 
  $id = randid();
  echo boxproduct($id);
 }
}

//Loop Product
function loopproduct($min,$max)
{
 for ($i=$min; $i < $max; $i++) { 
  echo boxproduct($i);
 }
}

//Random ID Product
function randid()
{
 $id = rand(0,maxline());
 return $id;
}

//Landing Page in product.php
function landingpage($id)
{
 //Random Landing Page
 $mylp   = glob("lp/*.txt"); 
 $randlp = rand(0,count($mylp)-1);
 
 $filelp = $mylp[$randlp];
 $getlp  = file_get_contents($filelp);
 
 //Product Data from data.csv
 $file   = file(setting('file'));
 $data   = explode(',', $file[$id]);
 $title  = trim($data['0'], '"');
 $link   = trim($data['1'], '"');
 $img    = trim($data['2'], '"');
 
 $lp     = str_replace("{get title}",$title,$getlp);
 $lp     = str_replace("{get link}",$link,$lp);
 $lp     = str_replace("{get img}",$img,$lp);

 return $lp;
}

?>

การเรียกหน้า product.php?id=2 นะครับ ถ้าไม่ระบุมันก็จะ Random id มาแสดงนะครับ
ใน บทหน้า ผมคงมาปรับเรื่องนี้ ให้ SEO มากว่านี้ แล้วกันครับ ตอนนี้ไว้เท่านี้ครับ บทหน้ามาอ่านกันต่อนะครับ

บทเรียนทั้งหมด