به نام خدا .
[img width=640 height=292]http://tinypic.info/files/mro2mu7x97zudocadhx3.jpg[/img]

امروز برای دوستان آموزش ساخت آخرین ارسالهای انجمن به صورتی که در این تاپیک عنوان شده رو آماده کردم .
ابتدا از دوستان عذر خواهی میکنم ، به خاطر اینکه وقت نداشتم این آموزش رو به صورت بسته و آماده در اختیار دوستان قرار بدم .

آموزش :

برای ساخت آخرین ارسالها به صورتی که در عکس نمایش داده شده به ترتیبی که در زیر عنوان خواهم کرد ، فایلهای قالب خود را ویرایش کنید :

1 - ابتدا فایل Sources/Recent.php را در پوشه ای فروم شما نصب شده را ادیت میکنیم :
پیدا کنید :
کد:
	global $scripturl, $txt, $db_prefix, $user_info, $modSettings, $func;

	// Find all the posts. Newer ones will have higher IDs. (assuming the last 20 * number are accessable...)
	// !!!SLOW This query is now slow, NEEDS to be fixed. Maybe break into two?
	$request = db_query("
		SELECT
			m.posterTime, m.subject, m.ID_TOPIC, m.ID_MEMBER, m.ID_MSG,
			IFNULL(mem.realName, m.posterName) AS posterName, t.ID_BOARD, b.name AS bName,
			LEFT(m.body, 384) AS body, m.smileysEnabled
		FROM ({$db_prefix}messages AS m, {$db_prefix}topics AS t, {$db_prefix}boards AS b)
			LEFT JOIN {$db_prefix}members AS mem ON (mem.ID_MEMBER = m.ID_MEMBER)
		WHERE m.ID_MSG >= " . max(0, $modSettings['maxMsgID'] - 20 * $showlatestcount) . "
			AND t.ID_TOPIC = m.ID_TOPIC
			AND b.ID_BOARD = t.ID_BOARD" . (!empty($modSettings['recycle_enable']) && $modSettings['recycle_board'] > 0 ? "
			AND b.ID_BOARD != $modSettings[recycle_board]" : '') . "
			AND $user_info[query_see_board]
		ORDER BY m.ID_MSG DESC
		LIMIT $showlatestcount", __FILE__, __LINE__);
و جایگزین کنید :
کد:
	global $scripturl, $txt, $db_prefix, $user_info, $modSettings, $func, $settings, $ID_MEMBER;

	// Find all the posts. Newer ones will have higher IDs. (assuming the last 20 * number are accessable...)
	// !!!SLOW This query is now slow, NEEDS to be fixed. Maybe break into two?
	if (!empty($modSettings['recent_topics']) && $modSettings['recent_topics']){
  $request = db_query("
 		SELECT
 			m.posterTime, ms.subject, m.ID_TOPIC, m.ID_MEMBER, m.ID_MSG, b.ID_BOARD, b.name AS bName,
 			IFNULL(mem.realName, m.posterName) AS posterName, " . ($user_info['is_guest'] ? '1 AS isRead, 0 AS new_from' : '
 			IFNULL(lt.ID_MSG, IFNULL(lmr.ID_MSG, 0)) >= m.ID_MSG_MODIFIED AS isRead,
 			IFNULL(lt.ID_MSG, IFNULL(lmr.ID_MSG, -1)) + 1 AS new_from') . ", LEFT(m.body, 384) AS body, m.smileysEnabled, m.icon, t.numReplies, t.numViews
 		FROM ({$db_prefix}messages AS m, {$db_prefix}topics AS t, {$db_prefix}boards AS b, {$db_prefix}messages AS ms)
 			LEFT JOIN {$db_prefix}members AS mem ON (mem.ID_MEMBER = m.ID_MEMBER)" . (!$user_info['is_guest'] ? "
 			LEFT JOIN {$db_prefix}log_topics AS lt ON (lt.ID_TOPIC = t.ID_TOPIC AND lt.ID_MEMBER = $ID_MEMBER)
 			LEFT JOIN {$db_prefix}log_mark_read AS lmr ON (lmr.ID_BOARD = b.ID_BOARD AND lmr.ID_MEMBER = $ID_MEMBER)" : '') . "
 		WHERE t.ID_LAST_MSG >= " . ($modSettings['maxMsgID'] - 35 * min($showlatestcount, 5)) . "
 			AND t.ID_LAST_MSG = m.ID_MSG
 			AND b.ID_BOARD = t.ID_BOARD" . (empty($exclude_boards) ? '' : "
 			AND b.ID_BOARD NOT IN (" . implode(', ', $exclude_boards) . ")") . "
 			AND $user_info[query_see_board]
 			AND ms.ID_MSG = t.ID_FIRST_MSG
 		ORDER BY t.ID_LAST_MSG DESC
 		LIMIT $showlatestcount", __FILE__, __LINE__);
	} else {
   $request = db_query("
  		SELECT
  			m.posterTime, m.subject, m.ID_TOPIC, m.ID_MEMBER, m.ID_MSG,
  			IFNULL(mem.realName, m.posterName) AS posterName, t.ID_BOARD, b.name AS bName,
  			LEFT(m.body, 384) AS body, m.smileysEnabled, m.icon, t.numViews, t.numReplies
  		FROM ({$db_prefix}messages AS m, {$db_prefix}topics AS t, {$db_prefix}boards AS b)
  			LEFT JOIN {$db_prefix}members AS mem ON (mem.ID_MEMBER = m.ID_MEMBER)
  		WHERE m.ID_MSG >= " . max(0, $modSettings['maxMsgID'] - 20 * $showlatestcount) . "
  			AND t.ID_TOPIC = m.ID_TOPIC
  			AND b.ID_BOARD = t.ID_BOARD" . (!empty($modSettings['recycle_enable']) && $modSettings['recycle_board'] > 0 ? "
  			AND b.ID_BOARD != $modSettings[recycle_board]" : '') . "
  			AND $user_info[query_see_board]
  		ORDER BY m.ID_MSG DESC
  		LIMIT $showlatestcount", __FILE__, __LINE__);
	}
پیدا کنید :
کد:
			),
			'topic' => $row['ID_TOPIC'],
و اضافه کنید بعد از آن :
کد:
			'icon' => file_exists($settings['theme_dir'] . '/images/post/' . $row['icon'] . '.gif') ? $settings['images_url'] . '/post/' . $row['icon'] . '.gif' : $settings['default_images_url'] . '/post/' . $row['icon'] . '.gif',
			'views' => $row['numViews'],
			'replies' => $row['numReplies'],

در این قسمت فایل BoardIndex.template.php را ویرایش می کنیم :
(( نکته : توجه داشته باشید این فایل مربوط به قالب شما میشود . یعنی مثلا نام قالب شما "VB" است شما باید فایل Themes/VB/BoardIndex.template.php را ویرایش کنید.))

پیدا کنید :
کد:
						<table cellpadding="0" cellspacing="0" width="100%" border="0">';
و جایگزین کنید :
کد:
						<table cellpadding="0" cellspacing="1" width="100%" border="0">
    	  <tr>
        <td class="catbg2" style="text-align:left;" colspan="2">', $txt[70] ,'</td>
        <td class="catbg2" style="text-align:center;">', $txt[110] ,'</td>
        <td class="catbg2" style="text-align:center;">', $txt[301] ,'</td>
        <td class="catbg2" style="text-align:center;">', $txt[20] ,'</td>
        <td class="catbg2" style="text-align:center;">', $txt[29] ,'</td>
        <td class="catbg2" style="text-align:right;">', $txt[317] ,'</td>
       </tr>';
و مجدد پیدا کنید :
کد:
			foreach ($context['latest_posts'] as $post)
				echo '
							<tr>
								<td class="middletext" valign="top"><b>', $post['link'], '</b> ', $txt[525], ' ', $post['poster']['link'], ' (', $post['board']['link'], ')</td>
								<td class="middletext" align="right" valign="top" nowrap="nowrap">', $post['time'], '</td>
							</tr>';
جایگزین کنید :
کد:
			$cnt = 0;
			foreach ($context['latest_posts'] as $post){
     $cnt++;
     $class = ($cnt % 2) ? 'windowbg' : 'windowbg2';
     
    echo '
							<tr>
        <td class="', $class, '"><img src="', $post['icon'] , '" alt="" /></td>
								<td class="', $class, '"" title="', $post['preview'] ,'">', $post['link'], '</td>
        <td class="', $class, '"" style="text-align:center;">', $post['replies'], '</td>
								<td class="', $class, '"" style="text-align:center;">', $post['views'], '</td>								
        <td class="', $class, '"" style="text-align:center;">',$post['board']['link'], '</td>
        <td class="', $class, '"" style="text-align:center;">',$post['poster']['link'], '</td>
								<td class="', $class, '"" style="text-align:right;" nowrap="nowrap">', $post['time'], '</td>
							</tr>';
    }
در قسمت بعدی فایل Sources/ModSettings.php را ویرایش می کنیم :

پیدا کنید :
کد:
			// Who's online.
			array('check', 'who_enabled'),
اضافه کنید بعد از آن :
کد:
		'',
   // Recent topics ?
   array('check', 'recent_topics',null, &$txt['recent_topics']),

فایل Themes/default/languages/ModSettings.persian.php :

پیدا کنید :
کد:
?>
جایگزین کنید:
کد:
$txt['recent_topics'] = 'Show recent topics instead of recent posts';
کار به پایان رسیده ! تبریک میگم ;D
فقط دوستان توجه داشته باشن باید مقدار "تعداد آخرین ارسال های نمایش داده شده در صفحه اول انجمن ها :" را در قسمت "تنظيمات قالب جاري" حتما به مقدار دلخواه تغییر دهند.
موفق باشید !
اگر سوالی بود در همین تاپیک عنوان کنید.
یاعلی