วันศุกร์ที่ 6 เมษายน พ.ศ. 2555

[SMF] ฟังก์ชั่นแสดงกระทู้ล่าสุดอย่างเดียว ไม่แสดงกระทู้ตอบ

หลายวันก่อน มีน้องคนหนึ่งร่อนอีเมล์มาถามว่า
กำลังทำบอร์ดอยู่เหมือนกัน แต่อยากทราบว่า กระทู้ล่าสุดในบอร์ดทำยังไงถึงจะให้แสดงเฉพาะกระทู้ล่าสุดจริงๆ ไม่แสดงกระทู้อัพเดทที่มีคำว่า Re: นำหน้า

น้องเค้ากลัวผมไม่เข้าใจก็เลยส่งภาพมาให้ดูต่างหน้าด้วย


วิธีทำก็ไม่ซับซ้อนอะไร เอาให้ง่ายๆ เข้าใจง่ายๆ
ฟังก์ชั่นที่ทางระบบ smf ทำไว้แล้วนั้น เราจะไม่ไปแตะต้อง เราเขียนฟังก์ชั่นขึ้นมาใหม่เลยก็แล้วกัน

ดังนี้ครับ

  function recentTopics($num=20)
  {
      global $context, $settings, $db_prefix, $txt, $scripturl, $user_info, $modSettings,$smcFunc;

          $request1=$smcFunc['db_query']('','SELECT t.id_topic,m.body,m.subject,mb.member_name
          FROM ({db_prefix}topics as t , {db_prefix}messages as m,{db_prefix}members as mb)
          WHERE t.id_first_msg=m.id_msg AND m.id_member=mb.id_member
          ORDER BY t.id_topic DESC
          LIMIT {int:num}',
          array( 'num'=>$num,
  )  );
 
 
  echo "<ul>";
  while ($row = mysql_fetch_assoc($request1))
  {
 
  echo '<li><a href="/smf/?topic='.$row['id_topic'].'">'.$row['subject'].' </a> โดย '.$row['member_name'].' </li>';

 }
echo "</ul>";
 
  mysql_free_result($request1);

}

การนำไปใช้

ก็นำฟังก์ชั่นนี้ไปทิ้งไว้ในไฟล์ index.template.php
ไปใส่ด้านล่างสุดเลยก็ได้ครับ แต่ต้องอยู่ภายในเครื่องหมาย ? >

จากนั้น หาตำแหน่งเหมาะที่อยากให้กระทู้ล่าสุดโชว์ ใส่คำสั่งนี้ไป <?php recentTopics();?>
อยากให้แสดงจำนวนเท่าไร ก็ใส่ตัวเลขในเครื่องหมายวงเล็บไปเท่านั้น

เช่น  recentTopics(10);

ก็จะแสดงจำนวนกระทู้ทั้งหมด 10 กระทู้

ฟังก์ชั่นนี้ผมพึ่งเขียนขึ้นแบบง่ายๆ ดังนั้นเลยไม่ได้ตกแต่งให้สวยงาม ถ้าจะนำไปใช้ก็ตกแต่งด้วย css นิดหน่อยก็สวยงามอร่ามตาแล้วละครับ

ก็ประมาณนี้นะครับ ลองเอาไปปรับใช้ดู
ติดขัดตรงไหนก็สอบถามได้ครับ ยินดีถ้าช่วยได้ก็ช่วยเต็มที่


วันพฤหัสบดีที่ 5 เมษายน พ.ศ. 2555

[SMF] ข้อควรระวังหลังจาก Upgrade SMF เวอร์ชั่นใหม่

สำหรับนักพัฒนาหรือใช้งานบอร์ด smf แล้ว สิ่งหนึ่งที่จะต้องเจอหรือทำอยู่เรื่อยๆ คือ การอัพเกรดเวอร์ชั่น เพราะ smf เองได้พัฒนาเวอร์ชั่นมาโดยตลอดอย่างไม่หยุดยั้ง ล่าสุด คือ เวอร์ชั่น 2.02
การอัพเกรดเวอร์ชั่นทำได้อย่างง่ายมาก คือ สามารถทำออนไลน์โดยล็อกอินเข้าสู่ระบบล็อกอิน และเลือกเมนูปรับปรุงเวอร์ชั่น ดูเหมือนจะง่าย แต่เอาเข้าจริงก็ไม่ได้ง่า่ยอย่างนั้นเท่าไร เพราะการอัพเกรดเวอร์ชั่นของ smf
ระบบจะทำการเขียนคำสั่งใหม่ลงไปในตัวไฟล์ .php หลายๆไฟล์ ถ้ามีไฟล์ไหนหรือโฟลเดอร์ไหนไม่ได้เซตให้เป็น 777 ระบบก็จะไม่สามารถเขียนลงไปได้ เกิดปัญหาเออเร่อทันที !!

ดังนั้น เลือกวิธีอัพเกรดแบบ Manual ดีกว่าครับ
ไปดาวน์โหลดไฟล์อัพเกรดมา แล้วอัพไฟล์ดังกล่าวไปทับตัวเดิมเสีย  (กระบวนการนี้ดูจะสุ่มเสี่ยงต่อการที่บอร์ดจะล่ม แต่จริงๆแล้วไม่มีปัญหาใดๆครับ)

หลังจากอัพไฟล์ไปทับตัวเดิมเสร็จ ก็เรียกหาไฟล์ upgrade.php และคลิกดำเนินการตามขั้นตอนจนเสร็จ

สิ่งที่อยากจะเตือนให้ระวังหลังจากอัพเกรดแล้วก็คือ  การติ๊กกลับมาสู่โหมดปกติ
เวลาที่อัพเกรด ถ้าเป็นเวอร์ชั่น 1 เราต้องทำการเปลี่ยนภาษาให้เป็นภาษาอังกฤษ และเลือกธีมให้เป็นdefault เสียก่อน แต่เวอร์ชั่น 2 ไม่ต้องทำการใดๆ ระบบจะทำให้โดยอัตโนมัติครับ
และระหว่างที่ทำการอัพเกรดอยู่นั้น เพื่อป้องกันสมาชิกเข้ามาใช้งานบอร์ดในขณะที่ยังดำเนินการอยู่ ระบบจึงทำการเข้าสู่โหมด "เข้าโหมดบำรุงรักษา" ไว้

 หลังจากอัพเกรดเสร็จเรียบร้อย ระบบจะเปลี่ยนภาษาให้เป็นภาษาไทยและเลือกธีมให้เป็นธีมเดิม แต่โหมด "บำรุงรักษา" ระบบมันไม่ติ๊กให้ครับ เราต้องติ๊กให้เอง

ถามว่าถ้าไม่ติ๊กแล้วจะเกิดปัญหาอะไรมั้ย?
ตอบว่า ไม่มีปัญหาอะไรหรอกครับ แต่สมาชิกจะไม่สามารถใช้งานบอร์ดได้เท่านั้นเอง !!

เข้าไปที่ ผู้ดูแล > ปรับแต่งบอร์ด >ค่าต่างๆในระบบ> ติ๊กเครื่องหมายถูกตรง  "เข้าโหมดบำรุงรักษา" ออก

เสร็จพิธีครับ