ผู้เขียน หัวข้อ: วิธีทำรูปประจำบอร์ด smf (ฉบับแก้ไข)  (อ่าน 3526 ครั้ง)

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

ออฟไลน์ Admin

  • Administrator
  • *****
  • กระทู้: 1415
  • Level:
    0%
  • Thank : 61
  • เพศ: ชาย
    • ดูรายละเอียด
    • สะกิดข่าว
วิธีทำรูปประจำบอร์ด smf (ฉบับแก้ไข)
« เมื่อ: สิงหาคม 02, 2012, 05:10:36 pm »
จากการใช้งาน ทำให้ผมพบข้อผิดพลาดของโค้ดดังกล่าวนี้ ซึ่งนั่นก็คือ
• ถ้าไม่ได้ใส่ภาพไอคอนที่บอร์ดไหน ภาพไอคอนจะไม่แสดงเป็นภาพไอคอนดั้งเดิมของ SMF แต่จะแสดงเป็นข้อความ No New Posts ขึ้นมาแทน
• บอร์ดย่อยจะไม่แสดงภาพไอคอนเหมือนกับบอร์ดหลัก ถึงแ้ม้จะกำหนดเลข ID ตามบอร์ดนั้นๆแล้วก็ตาม

ซึ่งทำให้ผมต้องย้อนกลับไปดูม็อด cbi v0.5 (Custom Board Icons) ดั้งเดิม และนำมาเรียบเรียบใหม่ โดยแก้ไขข้อผิดพลาดที่ได้เขียนเอาไว้ข้างต้นเรียบร้อยแล้ว

• เปิดไฟล์ Themes/<theme>/BoardIndex.template.php
            Themes/<theme>/MessageIndex.template.php
• ค้นหาโค้ดนี้ทั้ง 2 ไฟล์

โค๊ด: [Select]
// If the board is new, show a strong indicator.
if ($board['new'])
   echo '<img src="', $settings['images_url'], '/on.gif" alt="', $txt[333], '" title="', $txt[333], '" />';
// This board doesn't have new posts, but its children do.
elseif ($board['children_new'])
   echo '<img src="', $settings['images_url'], '/on2.gif" alt="', $txt[333], '" title="', $txt[333], '" />';
// No new posts at all! The agony!!
else
   echo '<img src="', $settings['images_url'], '/off.gif" alt="', $txt[334], '" title="', $txt[334], '" />';

• นำโค้ดนี้ไปวางทับ MessageIndex.template.php

โค๊ด: [Select]
// If the board is new, show a strong indicator.
if ($board['new']) {
if (file_exists($settings['theme_dir'] . '/images/on_' . $board['id'] . '.gif'))
$board_new_img=$settings['images_url']. '/on_' . $board['id'] . '.gif';
else
$board_new_img=$settings['images_url']. '/on.gif';

echo '<img src="', $board_new_img,'" alt="', $txt[333], '" title="', $txt[333], '" border="0" />';

// This board doesn't have new posts, but its children do.
} elseif ($board['children_new']) {
if (file_exists($settings['theme_dir'] . '/images/on2_' . $board['id'] . '.gif'))
$childboard_new_img=$settings['images_url']. '/on2_' . $board['id'] . '.gif';
else
$childboard_new_img=$settings['images_url']. '/on2.gif';

echo '<img src="', $childboard_new_img,'" alt="', $txt[333], '" title="', $txt[333], '" border="0" />';

// No new posts at all!  The agony!!
} else {
if (file_exists($settings['theme_dir'] . '/images/off_' . $board['id'] . '.gif'))
$board_nonew_img=$settings['images_url']. '/off_' . $board['id'] . '.gif';
else
$board_nonew_img=$settings['images_url']. '/off.gif';

echo '<img src="', $board_nonew_img,'" alt="', $txt[334], '" title="', $txt[334], '" border="0" />';
}

• เซฟไฟล์ BoardIndex.template.php และไฟล์ MessageIndex.template.php เป็นอันเสร็จสิ้นการแก้ไขโค้ด

ต่อมาคือภาพไอคอนที่จะนำมาแสดงที่บอร์ด
• สร้างภาพขึ้นมา 3 ภาพ ให้มีขนาดเหมาะสมกับบอร์ด โดยมีชื่อไฟล์ดังนี้
... on_ID.gif   <-- หมายถึง ภาพที่แสดงว่ามีโพสใหม่ภายในบอร์ดหลัก
... on2_ID.gif <-- หมายถึง ภาพที่แสดงว่ามีโพสใหม่ภายในบอร์ดย่อย
... off_ID.gif   <-- หมายถึง ภาพที่แสดงว่าไม่มีโพสใหม่ใดๆเลย

Note1: ID = เลข ID ของบอร์ด (ต้องใส่เป็นเลขจำนวนเต็ม)
Note2: เลข ID ของบอร์ดให้ดูที่ท้ายลิงค์ http://<yoursite>/forum/index.php?board=2.0 แต่ให้ใส่เป็นเลขจำนวนเต็มก็คือ 2
Example: on_2.gif, on2_2.gif, off_2.gif

• นำไฟล์ภาพที่ทำเสร็จแล้วไปวางไว้ที่ Themes/<theme>/images

• เข้าเว็บบอร์ดไปดูผลว่า ภาพที่ทำไว้แสดงผลออกมาหรือไม่? และบอร์ดที่ไม่ได้กำหนดภาพไว้ จะแสดงเป็นภาพไอคอนดั้งเดิมหรือไม่? โดยให้ตรวจสอบทั้งบอร์ดหลักและบอร์ดย่อยเลยนะ ซึ่งถ้าผลออกมาเป็นไปตามที่บอกไว้ ก็เป็นอันเสร็จสิ้นการแสดงภาพไอคอนประำจำบอร์ด


ขอขอบคุณ Zone-IT

 
แชร์บทความ...
โค้ดแบบ forum
(BBCode)
โค้ดแบบ site/blog
(HTML)