Your Keyword Here!

กำหนดเงื่อนไขการแสดงผลให้หน้าเว็บ

Monday, August 5, 2013

หลังจากได้ลองปรับแต่ง blogger อยู่นาน ซึ่งช่วงแรกๆมันก็เจอปัญหาอยู่อย่างคือทุกครั้งที่เราปรับแต่งการแสดงผลของ blog ของเรามักจะมี code html มาเกี่ยวข้อง อาจเป็นเพราะบ้านผมไม่เคยใช้ภาษานี้คุยกันก็เลยไม่เข้าใจมันสักที แต่อย่างที่รู้กันตอนเริ่มทำ blog แรกๆ อะไรๆมันก็ดูใหม่สำหรับเราไปหมดอยากลองอย่างนั้นบ้างอย่างนี้บ้าง วันนึงเปลี่ยนไม่รู้กี่รอบทุกรอบก็จะกลับไปดูตัวอย่างอีก

กำหนดเงื่อนไขการแสดงหน้าเว็บบล็อกเพราะทำอะไรโดยที่เราไม่เข้าใจก็มักจะออกมาในลักษณะทำตามตัวอย่างเขา ทำครั้งนี้เสร็จก็ดีใจหน้าตา blog ออกมาถูกใจทำได้อย่างที่เขาแนะนำแต่ไม่เคยเข้าใจทำให้เราใช้เวลานานเกินจำเป็น เลยอยากแนะนำให้ศึกษาเรื่องนี้ให้เข้าใจเพื่อให้การปรับแต่ง blog กลายเป็นเรื่องง่ายๆของเรา
ไม่แนะนำให้นั่งอ่านนั่งท่องนะมันไม่เข้าใจหรอกจริงๆ ผมทำแบบนี้ คือ แรกๆทุกครั้งที่ผมปรับแต่ง blog ก็กลับจะกลับมาทำความเข้าใจ code ว่ามันใส่อะไร ไว้ตรงไหน แล้วผลเป็นอย่างไร

Conditional tag คือ เงื่อนไขสั้นๆ ที่จะใช้ใน template เพื่อปรับเปลี่ยนว่าให้ content ส่วนไหนแสดงและแสดงอย่างไรในแต่ละหน้า ทั้งนี้ขึ้นอยู่กับเงื่อนไขที่เข้ากับหน้านั้นๆ อย่าพึ่งงงครับ ประมาณว่า
ผมอยากโชว์ประวัติผู้เขียนใน blog ผมก็เพิ่ม Gadget ชื่อ Profile (code ก็จะเขียนว่าแสดง profile ซึ่งเป็นคำสั่งหลัก) เข้าไปแต่มันโชว์ทุกหน้าซึ่งผมไม่ต้องการ ผมอยากให้มันแสดงแค่หน้าแรก ผมก็ต้องใส่ conditional tag ที่กำหนดว่า "ถ้าเป็นหน้าแรก" ลงไป เมื่อกำหนดเงื่อนไข "ถ้าเป็นหน้าแรกให้แสดงแสดง Profile" หน้าอื่นๆมันไม่ใช่หน้าแรกมันเลยไม่แสดง แค่นี้เองครับ
ร่ายซะยาวเลยเข้าเรื่องเลยครับ

Part1 :ไวยกรณ์ของ Conditional tag หรือหน้าตาของมัน

           <b:if cond='เงื่อนไข'>
           content (เนื้อหาหรือคำสั่ง)
           </b:if>
มันประกอบด้วย <b:if> ที่มี cond เป็นส่วนที่จะใส่เงื่อนไข แล้วลงท้ายด้วย </b:if> (ทุกครั้งที่เปิดด้วย <b:if> ก็ต้องปิดด้วย </b:if> )
ตามโครงสร้างนี้ก็หมายความว่า "ถ้าเป็นไปตามเงื่อนไขแล้วคำสั่งก็จะทำงาน" (จากตัวอย่างด้านบน ถ้าตอนนี้ผมเปิดดูหน้า blog อยู่ มันก็ดูว่าเปิดหน้าแรกอยู่รึเปล่าถ้าใช่ก็จะแสดง profile ให้ดู)

Part 2: List of Conditional tags (รายการของเงื่อนไข)

รายการต่อไปนี้เป็นเงื่อนไขที่ระบุเฉพาะเจาะจงที่ใช้บ่อย ผมลงไว้นี้เป็นแค่ส่วนเปิด <b:if> ซึ่งมันก็จะต้องปิดด้วย </b:if> เสมอตอนที่คุณเอาไปใช้กับ template (เปิดแล้วต้องไม่ลืมปิด)
1. Index (list) pages
 <b:if cond='data:blog.pageType == "index"'>
เงื่อนไขว่า ถ้าเปิดหน้า รายการบทความ หน้าแรก ป้ายกำกับ(labels page) หรือคลังบทความ(archive page) แล้ว คำสั่งที่ต่อจากนี้จะทำงาน

2. Post (item) pages
<b:if cond='data:blog.pageType == "item"'>
เงื่อนไขว่า ถ้าเปิดหน้าแสดงบทความแบบเต็มแล้ว คำสั่งที่ต่อจากนี้จะทำงาน

3. Static pages
 <b:if cond='data:blog.pageType == "static_page">
เงื่อนไขว่า ถ้าเปิดหน้า static page (หน้าเว็บอิสระ หน้าเว็บที่ตายตัวไม่ดึงเนื้อหาจากฐานข้อมูลมา ดูตัวอย่างหน้า Contact Form) แล้ว คำสั่งที่ต่อจากนี้จะทำงาน

4. Home Page
<b:if cond='data:blog.url == data:blog.homepageUrl'>
เงื่อนไขว่า ถ้าเปิดหน้าแรก(Home Page) แล้ว คำสั่งที่ต่อจากนี้จะทำงาน

5. Archive pages
 <b:if cond='data:blog.pageType == "archive"'>
เงื่อนไขว่า ถ้าเปิดหน้าคลังบทความ(Archive Page) แล้ว คำสั่งที่ต่อจากนี้จะทำงาน

6. Specific page or URL
<b:if cond='data:blog.url == "ใส่URLในนี้"'>
เงื่อนไขว่า ถ้าเปิดหน้าที่ตรงกับ URL(ที่อยู่ของหน้าเว็บ)ที่ระบุแล้ว คำสั่งที่ต่อจากนี้จะทำงาน

7. Label-search pages
<b:if cond='data:blog.searchLabel'>
เงื่อนไขว่า ถ้าเปิดหน้าป้ายกำกับแล้ว คำสั่งที่ต่อจากนี้จะทำงาน

8. Post และ Static pages
<b:if cond='data:blog.url == data:post.url'>
เงื่อนไขว่า ถ้าเปิดหน้าเนื้อหาบทความแบบเต็มหรือหน้าเว็บอิสระ(static page) แล้ว คำสั่งที่ต่อจากนี้จะทำงาน

9. First Post
 <b:if cond='data:post.isFirstPost'>
เงื่อนไขนี้ไม่ได้ใช้กับหน้าแต่จะใช้กับบทความอันแรก(อันบนสุด) ของหน้า เช่น ถ้าเป็นบทความแรกแล้วให้มันแสดงแบบเต็ม

Part 3: การใช้ Conditional tags

  • เอา conditional tags ไปใช้งานกับคำสั่งเนื้อหา(content) โดยใส่ content ไว้ระหว่าง <b:if cond…> และ </b:if> เช่น แบบนี้
<b:if cond='data:blog.url == data:blog.homepageUrl'> 
คำสั่งหรือเนื้อหา (คำสั่งนี้จะทำงานหากเป็นจริงตามเงื่อนไข(เฉพาะหน้าแรกเท่านั้น))
</b:if>
หมายความว่า ถ้าเป็นหน้าแรก(เงื่อนไข)ให้คำสั่ง (content)แสดง


  • หากคุณต้องการกำหนดให้เนื้อหาแสดงหรือคำสั่งทำงานเป็นอีกอย่างนึงเมื่อ "ไม่ตรง" กับเงื่อนไข(condition)ที่กำหนด ต้องใส่ <b:else/> ตามด้วยเนื้อหาหรือคำสั่ง แบบนี้ครับ
<b:if cond='data:blog.url == data:blog.homepageUrl'>
คำสั่งหรือเนื้อหา 1 (คำสั่งนี้จะทำงานหากเป็นจริงตามเงื่อนไข(เฉพาะหน้าแรกเท่านั้น))
<b:else/> 
คำสั่งหรือเนื้อหา 2 (คำสั่งนี้จะทำงานหาก "ไม่" เป็นจริงตามเงื่อนไข(เฉพาะหน้าแรกเท่านั้น))
</b:if>
หมายความว่า ถ้าเป็นหน้าแรก(เงื่อนไข)ให้คำสั่ง 1(content1)แสดง ถ้าไม่ใช่แล้วให้คำสั่ง 2(content2)แสดงแทน



  • หากคุณต้องการกำหนดให้เนื้อหาแสดงหรือคำสั่งทำงานเมื่อ "ไม่ตรง" กับเงื่อนไข(condition)ที่กำหนด โดยเปลี่ยน "==" ให้เป็น "!=" แบบนี้
<b:if cond='data:blog.url != data:blog.homepageUrl'>
คำสั่งหรือเนื้อหา 1 (คำสั่งนี้จะทำงานหากเป็นจริงตามเงื่อนไข(เฉพาะหน้าแรกเท่านั้น))
</b:if> 
จากตัวอย่าง content จะแสดงที่หน้าอื่นๆนอกจากหน้าแรก(นอกเหนือจากเงื่อนไข) แต่ลักษณะนี้ใช้ไม่ได้กับเงื่อนไข Label-search และ First Post


Credit: http://www.bloggersentral.com

No comments:

Post a Comment