วันศุกร์ที่ 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 นิดหน่อยก็สวยงามอร่ามตาแล้วละครับ

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


1 ความคิดเห็น:

  1. สุด ยอดครับ ไปมาหลายเว็บ ครับ มาที่นี่ ละเอียดยิบ เข้าใจง่าย ไม่มีกั๊ก
    ขอบคุณครับ

    ตอบลบ