Fonksiyonu hazır vermem anlamanı sağlamaz, eğer bir sorguyu bir fonksiyon içine alıp, bu sorguya dışarıdan değişken veremiyorsan eklenti geliştirmeye hazır değilsin demektir, phpBB yerine daha çok php.net te takılmalısın.
Dediğim yöntem ile sadece 1 sorgu kullanıyormış gibi görünsen de, aynı sorguyu 25 defa çağıracaksın, sorgu sayısı değişmez, sadece kod yapısı azalır.
Sorgu sayısını azaltmanın 2 yolu var; ya o sorguyu yapmayacaksın, ya da cache kullanacaksın.
Kabaca bahsettiğim olay şuydu:
- Kod: Tümünü seç
function sorgu($order, $where, $count, $block)
{
global $db;
$sql = 'SELECT *
FROM ' . TOPICS_TABLE . '
WHERE topic_status <> ' . FORUM_LINK
. $where .
'ORDER BY ' . $order;
$result = $db->sql_query_limit($sql, $count);
while(($row = $db->sql_fetchrow($result)))
{
$template->assign_block_vars('sorgu_' . $block, array(
'TITLE' => censor_text($row['topic_title']),
));
}
$db->sql_freeresult($result);
}
// sıralama kriterleri
$new_topic = 'topic_time DESC';
$pop_topic = 'topic_replies DESC';
// nerede
$where_new_topic = ' AND topic_approved = 1 ';
$where_pop_topic = ' AND topic_approved = 1 ';
// kaç tane
$count = 25;
sorgu($new_topic, $where_new_topic, $count, 'yenş', true); // yeni
sorgu($pop_topic, $where_pop_topic, $count,'popular', true); // popüler (en çok cevap yazılan)