- ชื่อ: Select board Show topics on home
- ผู้เขียน: UnclEo
- นำเสนอโดย: DexMoreGroup
- ประเภท: New Feature
- รองรับ: SMF 1.1.xx
- ปรับปรุงล่าสุด: 18 มิถุนายน 2553
รายละเอียด สำหรับท่านที่ต้องการนำกระทู้ล่าสุดจากบอร์ด SMF ไปแสดงในหน้าที่สร้างขึ้นเอง และการนำแสดงนั้นต้องเลือกเฉพาะบอร์ดไปแสดงบทความนี้สามารถช่วยท่านได้ โดยมีให้เลือก 2 แบบ ขอให้ท่านนำไปทดลองใช้ดูว่าชอบแบบใหนก็ใช้แบบนั้น
วิธีที่ 1
เลือกให้แสดงเฉพาะบอร์ด หลาย ๆ บอร์ด
แก้ไขไฟล์:file boarddir/SSI.php
ค้นหา -->>
if ($board !== null)
$board = (int) $board;
elseif (isset($_GET['board']))
$board = (int) $_GET['board'];
แก้เป็น -->>
// Was a board passed?
if ($board !== null)
{
// Are we using an array?
if (is_array($board))
{
// Make sure all values are numeric.
foreach ($board as $key => $board_id)
$board[$key] = (int) $board_id;
}
// Otherwise, it's probably a number.
else
{
$board = (int) $board;
}
}
// No board? Check GET variable.
elseif (isset($_REQUEST['board']))
{
// Could it be an array?
// You can pass a comma seperated list of boards, and they'll all be
// used (eg. ?board=1,2,3,4,5).
if (strpos($_REQUEST['board'], ',') !== false)
{
// Split up the string.
$board = explode(',', $_REQUEST['board']);
// Make sure all values are numeric.
foreach ($board as $key => $board_id)
$board[$key] = (int) $board_id;
}
// Probably a number (backwards-compatibility).
else
{
$board = (int) $_REQUEST['board'];
}
}
// WHERE clause in the queries.
$boardQuery = 'ID_BOARD ' . (is_array($board) ? ('IN (' . implode(',', $board) . ')') : ('= ' . $board));
ค้นหา -->>
// Make sure guests can see this board.
$request = db_query("
SELECT ID_BOARD
FROM {$db_prefix}boards
WHERE " . ($board === null ? '' : "ID_BOARD = $board
AND ") . "FIND_IN_SET(-1, memberGroups)
LIMIT 1", __FILE__, __LINE__);
if (mysql_num_rows($request) == 0)
{
if ($output_method == 'echo')
die($txt['smf_news_error2']);
else
return array();
}
list ($board) = mysql_fetch_row($request);
mysql_free_result($request);
แก้เป็น -->>
// If no boards were passed, get the first board guests can view
// Otherwise, check if all the passed boards are valid.
$request = db_query("
SELECT ID_BOARD, name
FROM {$db_prefix}boards
WHERE " . ($board === null ? '' : $boardQuery . '
AND ') . 'FIND_IN_SET(-1, memberGroups)
ORDER BY ID_BOARD ASC' . ($board === null ? '
LIMIT 1' : ''), __FILE__, __LINE__);
// No boards? That's bad.
if (mysql_num_rows($request) == 0)
{
if ($output_method == 'echo')
die($txt['smf_news_error2']);
else
return array();
}
$boardInfo = array();
// Empty the board ID array - We're grabbing the IDs from scratch.
unset($board);
$board = array();
// Loop through all returned boards.
while ($row = mysql_fetch_assoc($request))
{
// Add this board to the arrays.
// Board info - Used later on (in the stuff returned)
$boardInfo[$row['ID_BOARD']] = $row;
$board[] = $row['ID_BOARD'];
}
mysql_free_result($request);
// Let's get the new WHERE clause
// Note: The $board array does not need to be sanitised, its data has been
// returned from the database (and is safe).
$boardQuery = 'ID_BOARD IN (' . implode(',', $board) . ')';
ค้นหา -->>
WHERE ID_BOARD = $board
แก้เป็น -->>
WHERE $boardQuery
ค้นหา -->
m.ID_MSG, t.locked
เพิ่มไว้หลัง(บรรทัดเดิม)-->>
, t.ID_BOARD
ค้นหา -->
'link' => !empty($row['ID_MEMBER']) ? '<a href="' . $scripturl . '?action=profile;u=' . $row['ID_MEMBER'] . '">' . $row['posterName'] . '</a>' : $row['posterName']
),
'locked' => !empty($row['locked']),
เพิ่มไว้หลัง -->>
'board' => array(
'id' => $row['ID_BOARD'],
'name' => $boardInfo[$row['ID_BOARD']]['name'],
'href' => $scripturl . '?board=' . $row['ID_BOARD'],
'link' => '<a href="' . $scripturl . '?board=' . $row['ID_BOARD'] . '">' . $boardInfo[$row['ID_BOARD']]['name'] . '</a>'
),
สร้างไฟล์ showtopic.php
ขออภัย! ท่านไม่สามารถเข้าถึงข้อมูลส่วนนี้ได้ กรุณาอ่าน เงื่อนไขการใช้งาน DexMore.Comเอาไปไว้ใน $boarddir
วิธีที่ 2 แสดงโดยเลือกเฉพาะบอร์ด
สร้างไฟล์ lasttopic.php
ขออภัย! ท่านไม่สามารถเข้าถึงข้อมูลส่วนนี้ได้ กรุณาอ่าน เงื่อนไขการใช้งาน DexMore.Comเอาไปไว้ใน $boarddir
คำอธิบายอยู่ใหนโค๊ดแล้ว
วิธีแทรกในหน้าเว็บโดยใช้ iframe
<iframe marginwidth="0" marginheight="0" src="../forums/showtopics.php" name="board" frameborder="0" width="ความกว้าง" height="ความสูง" scrolling="0" ></iframe>
ลิงค์หัวข้อ:
http://dexmore.com/topic/331