1.เราต้องรู้ก่อนจะใช้ event ไหน
2.นำ event ไปเชคใน https://wiki.phpbb.com/Event_List#core. ... c_ids_data
3.ดู Argument ที่มีให้ตามภาพ 4.ไปประกาศ argument เก็บไว้ในตัวแปรในไฟล์ event
นำไฟล์นี้ไปไว้ใน
โค้ด: เลือกทั้งหมด
$sql_ary = $event['sql_ary'];
$sql_approved = $event['sql_approved'];
$sql_where = $event['sql_where'];
$sql_limit_time = $event['sql_limit_time'];
$store_reverse = $event['store_reverse'];
$sql_sort_order = $event['sql_sort_order'];
โค้ด: เลือกทั้งหมด
public function viewforum_get_topic_ids_data($event) {
$sql_ary = $event['sql_ary'];
$sql_approved = $event['sql_approved'];
$sql_where = $event['sql_where'];
$sql_limit_time = $event['sql_limit_time'];
$store_reverse = $event['store_reverse'];
$sql_sort_order = $event['sql_sort_order'];
$sql_ary = array(
'5555555555' => 't.topic_id',
'FROM' => array(
TOPICS_TABLE => 't',
),
'WHERE' => "$sql_where
AND t.topic_type IN (" . POST_NORMAL . ', ' . POST_STICKY . ")
$sql_approved
$sql_limit_time",
'ORDER_BY' => 't.topic_type ' . ((!$store_reverse) ? 'DESC' : 'ASC') . ', ' . $sql_sort_order,
);
$event['sql_ary'] = $sql_ary;
}
code ที่เขียนไว้ใน event นี้จะแทนที่ code เก่าต่อเมื่อมีการ extract แล้ว
code หน้า php
โค้ด: เลือกทั้งหมด
/**
* Event to modify the SQL query before the topic ids data is retrieved
*
* @event core.viewforum_get_topic_ids_data
* @var array sql_ary SQL query array to get the topic ids data
* @var string sql_approved Topic visibility SQL string
* @var int sql_limit Number of records to select
* @var string sql_limit_time SQL string to limit topic_last_post_time data
* @var array sql_sort_order SQL sorting string
* @var int sql_start Offset point to start selection from
* @var string sql_where SQL WHERE clause string
* @var bool store_reverse Flag indicating if we select from the late pages
*
* @since 3.1.0-RC4
*/
print_r($sql_ary);echo "<br><br>";
$vars = array(
'sql_ary',
'sql_approved',
'sql_limit',
'sql_limit_time',
'sql_sort_order',
'sql_start',
'sql_where',
'store_reverse',
);
extract($phpbb_dispatcher->trigger_event('core.viewforum_get_topic_ids_data', compact($vars)));
print_r($sql_ary);
exit;
ก่อน
Array ( [SELECT] => t.topic_id [FROM] => Array ( [phpbb_topics] => t ) [WHERE] => t.forum_id = 2 AND t.topic_type IN (0, 1) AND 1 = 1 [ORDER_BY] => t.topic_type DESC, t.topic_last_post_time DESC, t.topic_last_post_id DESC )
หลัง
Array ( [5555555555] => t.topic_id [FROM] => Array ( [phpbb_topics] => t ) [WHERE] => t.forum_id = 2 AND t.topic_type IN (0, 1) AND 1 = 1 [ORDER_BY] => t.topic_type DESC, t.topic_last_post_time DESC, t.topic_last_post_id DESC )