1

Topic: Как добавить выборку из таблицы через хук

Если нужно добавить выборку из какой либо таблицы, чтобы сравнить с другой таблицей и вывести результат, к примеру на главной странице вывести последние темы. Вот в этот код, выборку:

// Print the categories and forums
$query = array(
  'SELECT'  => 'c.id AS cid, c.cat_name, f.id AS fid, f.forum_name, f.forum_desc, f.redirect_url, f.moderators, f.num_topics, f.num_posts, f.last_post, f.last_post_id, f.last_poster',
  'FROM'    => 'categories AS c',
  'JOINS'    => array(
    array(
      'INNER JOIN'  => 'forums AS f',
      'ON'      => 'c.id=f.cat_id'
    ),
    array(
      'LEFT JOIN'    => 'forum_perms AS fp',
      'ON'      => '(fp.forum_id=f.id AND fp.group_id='.$forum_user['g_id'].')'
    )
  ),
  'WHERE'    => 'fp.read_forum IS NULL OR fp.read_forum=1',
  'ORDER BY'  => 'c.disp_position, c.id, f.disp_position'
);

($hook = get_hook('in_qr_get_cats_and_forums')) ? eval($hook) : null;
$result = $forum_db->query_build($query) or error(__FILE__, __LINE__);

А на хук in_qr_get_cats_and_forums навесить код

    <hook id="in_qr_get_cats_and_forums"><![CDATA[

  $query['SELECT'] .= ', t.subject';
  $query['JOINS'][] = array(
        'LEFT JOIN' => 'topics AS t',
        'ON'        => 'f.last_post_id=t.last_post_id'
    );
    ]]></hook>

2

Re: Как добавить выборку из таблицы через хук

т.е в принципе, это уже готовое расширение, осталось только сформировать вывод результата на экран:

<hook id="in_normal_row_pre_display"><![CDATA[
    
if ($cur_forum['last_post'] != '')
  $forum_page['item_body']['info']['lastpost'] = '
<li class="info-lastpost"><span><small>'.format_time($cur_forum['last_post']).'</small></span>
<span><a href="'.forum_link($forum_url['post'], $cur_forum['last_post_id']).'">'.forum_htmlencode($cur_forum['subject']).'</a></span>
<span><small>'.forum_htmlencode($cur_forum['last_poster']).'</small></span></li>';
      else
  $forum_page['item_body']['info']['lastpost'] = '<li class="info-lastpost"><strong>'.$lang_common['Never'].'</strong></li>';

    ]]></hook>

Можно папке расширения дать имя id, например:
pan_last_post_on_index.
А затем сам каркас manifest.xml за основу можно взять любой указав соответствующие данные.