Джумас писал(а):Конечно проще ! Только при таком коде будут выводится и темы которые юзеру читать не положено, не будут подсвечиваться непрочитанные темы и т.д и т.п. и прочие грабли могут вылезти, а в родном search.php всё что надо предусмотрено. Короче родной файл search дает что мне надо, осталось только совместить его с custom страницей вот тут у меня и проблемка
Вот моя функция получающая последние 5 тем с форума, в зависимости от прав доступа, но без подсветки (не-)прочитанных тем
с кешированием!
Код: Выделить всё
/**
* Получаем последние 5 тем с форума
*/
function GetLastPost() {
global $db, $auth, $user, $template;
global $phpbb_root_path, $phpEx, $config, $cache;
$where = '';
$forbidden_forums = $auth->acl_getf('!f_read', true);
$forbidden_forums = array_unique(array_keys($forbidden_forums));
if (sizeof($forbidden_forums)>0) {
$where = 'WHERE '.$db->sql_in_set('forum.forum_id', $forbidden_forums, true, true); }
$result = $db->sql_query('SELECT forum.`forum_id`, forum.`forum_name`, user.`user_id`, user.`username`, post.`topic_replies_real`,post.`topic_replies`, post.`topic_last_post_time`, post.`topic_last_poster_colour`, post.`forum_id`,post.`topic_title`, post.`topic_last_post_id`, post.`topic_last_poster_name`, post.`topic_last_poster_id`, post.`topic_id` FROM '.TOPICS_TABLE.' post
LEFT JOIN '.USERS_TABLE.' user on user.`user_id` = post.`topic_last_poster_id`
LEFT JOIN '.FORUMS_TABLE.' forum on forum.`forum_id` = post.`forum_id` '.$where.' ORDER BY topic_last_post_time DESC LIMIT 0 , 5', 120);
while ($post = $db->sql_fetchrow($result)) {
$replies = ($auth->acl_get('m_approve', $post['forum_id'])) ? $post['topic_replies_real'] : $post['topic_replies'];
$template->assign_block_vars('lastpost', array(
'POST_TITLE' => $post['topic_title'],
'POST_REPLIES' => $replies,
'POST_TIME' => $user->format_date($post['topic_last_post_time']),
'POST_FORUM_LINK' => append_sid("{$phpbb_root_path}viewforum.$phpEx",'f='.$post['forum_id']),
'POST_FORUM_NAME' => $post['forum_name'],
'LAST_POST_AUTHOR_FULL' => get_username_string('full', $post['topic_last_poster_id'], $post['topic_last_poster_name'], $post['topic_last_poster_colour']),
'POST_AUTHOR' => '<a href="'.( append_sid("{$phpbb_root_path}memberlist.$phpEx",array( 'mode' => 'viewprofile' ,'u'=>$post['user_id']) ) ).'" style="color:#'.$post['topic_last_poster_colour'].'" class="username-coloured" target="_blank">'.$post['username'].'</a>',
'THREAD_LINK' => append_sid("{$phpbb_root_path}viewtopic.$phpEx",array('f' => $post['forum_id'],'p' => $post['topic_last_post_id'])),
'POST_LINK' => append_sid("{$phpbb_root_path}viewtopic.$phpEx",array('f' => $post['forum_id'],'p' => $post['topic_last_post_id'])).'#p'.$post['topic_last_post_id'],
));
}
$template->assign_vars(
array(
'LAST_POST_IMG' => $user->img('icon_topic_latest', 'VIEW_LATEST_POST'),
)
);
}
мой шаблон
Код: Выделить всё
<div class="forumbg">
<div class="inner">
<span class="corners-top">
<span></span>
</span>
<ul class="topiclist">
<li class="header">
<dl class="icon">
<dt>Последнее на форуме</dt>
</dl>
</li>
</ul>
</div>
</div>
<div class="forabg">
<div class="inner">
<ul class="topiclist">
<li class="header">
<dl class="icon">
<dt class="forums" style="text-align:center;">Раздел</dt>
<dd class="topics">Тема</dd>
<dd class="posts">Ответы</dd>
<dd class="lastpost"><span>Последнее сообщение</span></dd>
</dl>
</li>
</ul>
<!-- IF .lastpost -->
<ul class="topiclist forums">
<!-- BEGIN lastpost -->
<li class="row">
<dl>
<dd style="width:250px; text-align:center;"><br/><a href="{lastpost.POST_FORUM_LINK}" class="forumtitle" target="_blank">{lastpost.POST_FORUM_NAME}</a></dd>
<dd style="width:200px; text-align:center;"><br/><a href="{lastpost.THREAD_LINK}" class="forumtitle" target="_blank">{lastpost.POST_TITLE}</a></dd>
<dd class="posts">{lastpost.POST_REPLIES}<dfn>Темы</dfn></dd>
<dd style="width:186px; text-align:center;">{L_POST_BY_AUTHOR} {lastpost.LAST_POST_AUTHOR_FULL}<br>
<!-- IF not S_IS_BOT --><a href="{lastpost.POST_LINK}" target="_blank">{LAST_POST_IMG}</a><!-- ENDIF -->
<span class="lasttopic_time">{lastpost.POST_TIME}</span><br />
</dd>
</dl></li>
<!-- END lastpost -->
</ul>
<!-- ELSE -->
<ul class="topiclist forums">
<li class="row">
<dl>
<dt style="text-align:center;">{L_NO_POSTS}</dt>
</dl>
</li>
</ul>
<!-- ENDIF -->
<span class="corners-bottom">
<span></span>
</span>
</div>
</div>