•  
     

Anúncios globais e tópicos fixo no início da listagem no Recent Topics

Bom glr hoje eu estava estudando como criar mods para phpbb e vi o recent topics... so que percebi que ele não exibia os tópicos fixos e anúncios no topo, eles ficavam misturados com outros tópicos, então resolvi dar uma olhada e alterei o loop dele para fazer com que esses tipos de tópicos ficassem sempre no topo da listagem.. e foi bem simples e editaremos apenas 1 arquivinho! :P ... Vamos ao tutorial..

Abra o arquivo /includes/functions_recenttopics.php

Procure por: (próxima a linha 288)

Código: Selecionar todos

$topic_icons = array();


Adicione esse código logo DEPOIS da linha acima:

Código: Selecionar todos


	$categorias_topicos = array(
		'globais'		 => array(),
		'anuncios'		 => array(),
		'fixos'			 => array(),
		'demais_topicos' => array()
	);


Procure por este trecho de código

Código: Selecionar todos

		$template->assign_block_vars($tpl_loopname, array(
			'FORUM_ID'					=> $forum_id,
			'TOPIC_ID'					=> $topic_id,
			'TOPIC_AUTHOR_FULL'			=> get_username_string('full', $row['topic_poster'], $row['topic_first_poster_name'], $row['topic_first_poster_colour']),
			'FIRST_POST_TIME'			=> $user->format_date($row['topic_time']),

			'LAST_POST_SUBJECT'			=> censor_text($row['topic_last_post_subject']),
			'LAST_POST_TIME'			=> $user->format_date($row['topic_last_post_time']),
			'LAST_VIEW_TIME'			=> $user->format_date($row['topic_last_view_time']),
			'LAST_POST_AUTHOR'			=> get_username_string('username', $row['topic_last_poster_id'], $row['topic_last_poster_name'], $row['topic_last_poster_colour']),
			'LAST_POST_AUTHOR_COLOUR'	=> get_username_string('colour', $row['topic_last_poster_id'], $row['topic_last_poster_name'], $row['topic_last_poster_colour']),
			'LAST_POST_AUTHOR_FULL'		=> get_username_string('full', $row['topic_last_poster_id'], $row['topic_last_poster_name'], $row['topic_last_poster_colour']),

			'PAGINATION'				=> topic_generate_pagination($replies, $view_topic_url),
			'REPLIES'					=> $replies,
			'VIEWS'						=> $row['topic_views'],
			'TOPIC_TITLE'				=> censor_text($row['topic_title']),
			'FORUM_NAME'				=> $row['forum_name'],

			'TOPIC_TYPE'			=> $topic_type,
			'TOPIC_FOLDER_IMG'		=> $user->img($folder_img, $folder_alt),
			'TOPIC_FOLDER_IMG_SRC'	=> $user->img($folder_img, $folder_alt, false, '', 'src'),
			'TOPIC_FOLDER_IMG_ALT'	=> $user->lang[$folder_alt],
			'NEWEST_POST_IMG'		=> $user->img('icon_topic_newest', 'VIEW_NEWEST_POST'),
			'TOPIC_ICON_IMG'		=> (!empty($icons[$row['icon_id']])) ? $icons[$row['icon_id']]['img'] : '',
			'TOPIC_ICON_IMG_WIDTH'	=> (!empty($icons[$row['icon_id']])) ? $icons[$row['icon_id']]['width'] : '',
			'TOPIC_ICON_IMG_HEIGHT'	=> (!empty($icons[$row['icon_id']])) ? $icons[$row['icon_id']]['height'] : '',
			'ATTACH_ICON_IMG'		=> ($auth->acl_get('u_download') && $auth->acl_get('f_download', $forum_id) && $row['topic_attachment']) ? $user->img('icon_topic_attach', $user->lang['TOTAL_ATTACHMENTS']) : '',
			'UNAPPROVED_IMG'		=> ($topic_unapproved || $posts_unapproved) ? $user->img('icon_topic_unapproved', ($topic_unapproved) ? 'TOPIC_UNAPPROVED' : 'POSTS_UNAPPROVED') : '',
			'REPORTED_IMG'			=> ($row['topic_reported'] && $auth->acl_get('m_report', $forum_id)) ? $user->img('icon_topic_reported', 'TOPIC_REPORTED') : '',

			'S_TOPIC_TYPE'			=> $row['topic_type'],
			'S_USER_POSTED'			=> (isset($row['topic_posted']) && $row['topic_posted']) ? true : false,
			'S_UNREAD_TOPIC'		=> $unread_topic,
			'S_TOPIC_REPORTED'		=> ($row['topic_reported'] && $auth->acl_get('m_report', $forum_id)) ? true : false,
			'S_TOPIC_UNAPPROVED'	=> $topic_unapproved,
			'S_POSTS_UNAPPROVED'	=> $posts_unapproved,
			'S_HAS_POLL'			=> ($row['poll_start']) ? true : false,
			'S_POST_ANNOUNCE'		=> ($row['topic_type'] == POST_ANNOUNCE) ? true : false,
			'S_POST_GLOBAL'			=> ($row['topic_type'] == POST_GLOBAL) ? true : false,
			'S_POST_STICKY'			=> ($row['topic_type'] == POST_STICKY) ? true : false,
			'S_TOPIC_LOCKED'		=> ($row['topic_status'] == ITEM_LOCKED) ? true : false,
			'S_TOPIC_MOVED'			=> ($row['topic_status'] == ITEM_MOVED) ? true : false,
			'S_TOPIC_TYPE_SWITCH'	=> ($s_type_switch == $s_type_switch_test) ? -1 : $s_type_switch_test,

			'U_NEWEST_POST'			=> $view_topic_url . '&view=unread#unread',
			'U_LAST_POST'			=> $view_topic_url . '&p=' . $row['topic_last_post_id'] . '#p' . $row['topic_last_post_id'],
			'U_LAST_POST_AUTHOR'	=> get_username_string('profile', $row['topic_last_poster_id'], $row['topic_last_poster_name'], $row['topic_last_poster_colour']),
			'U_TOPIC_AUTHOR'		=> get_username_string('profile', $row['topic_poster'], $row['topic_first_poster_name'], $row['topic_first_poster_colour']),
			'U_VIEW_TOPIC'			=> $view_topic_url,
			'U_VIEW_FORUM'			=> $view_forum_url,
			'U_MCP_REPORT'			=> append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=reports&mode=reports&f=' . $forum_id . '&t=' . $topic_id, true, $user->session_id),
			'U_MCP_QUEUE'			=> $u_mcp_queue,
		));


E comente-o ou remova-o.

Localize o trecho:

Código: Selecionar todos

}
	$db->sql_freeresult($result);


E adicione este trecho de código ANTES:

Código: Selecionar todos

		switch ($row['topic_type'])
		{
			case POST_GLOBAL:
				array_push( $categorias_topicos[ 'globais' ], $tmp_item );
			break;
			case POST_ANNOUNCE:
				array_push( $categorias_topicos[ 'anuncios' ], $tmp_item );
			break;
			case POST_STICKY:
				array_push( $categorias_topicos[ 'fixos' ], $tmp_item );
			break;
			default:
				array_push( $categorias_topicos[ 'demais_topicos' ], $tmp_item );
			break;
		}


Localize o trecho de código:

Código: Selecionar todos

	// Get URL-parameters for pagination
	$url_params = explode('&', $user->page['query_string']);


E insira o seguinte código ANTES:

Código: Selecionar todos

	foreach( $categorias_topicos as $categoria => $topicos )
	{
		foreach( $topicos as $topico )
		{
			$template->assign_block_vars( $tpl_loopname, $topico );
		}
	}


NOTA: Eu realmente não lembro quando eu fiz essa modificação no MOD Recent Topics, mas acredito que devem ser apenas essas, de qualquer forma, o arquivo alterado está em anexo ao post ;)

O resultado vocês podem ver no print abaixo:

Imagem
Anexos
functions_recenttopics.zip
(4.76 KiB) Transferido 96 vezes
 
Legal, depois vou tentar ativar isso no phpbb 3.1.4

Estou usando o Announcement on Index
 
Queria muito poder usar 3.1.4 mas infelizmente to usando um theme que so foi a versão 3,0,x... e não sei como converter para a versão mais recente.. Só resta esperar o autor atualizar msm... :icon_rolleyes:
 
bRuc3 Escreveu:Queria muito poder usar 3.1.4 mas infelizmente to usando um theme que so foi a versão 3,0,x... e não sei como converter para a versão mais recente.. Só resta esperar o autor atualizar msm... :icon_rolleyes:

https://www.phpbb.com/downloads/#update

faz update pra versão 3.4 não tem misterio :P
 
*+RenaN+* Escreveu:
bRuc3 Escreveu:Queria muito poder usar 3.1.4 mas infelizmente to usando um theme que so foi a versão 3,0,x... e não sei como converter para a versão mais recente.. Só resta esperar o autor atualizar msm... :icon_rolleyes:

https://www.phpbb.com/downloads/#update

faz update pra versão 3.4 não tem misterio :P


Rennan o problema é que o thema não é compativel com a ultima versão do phpbb... localmente já atualizei o phpbb sendo que ele nem reconhece o tema para ativar.. por isso não atualizo o core..
 
tem template subsilver pra verção 3.1 que e instalado separado, soque vc tenque ajeitar 1 bug que tem nos bbcodes .