Página 1 de 1

Amigos aleatorios en el perfil con Profile Friends List MOD  Tema Solucionado

Publicado: 19 Oct 2014, 14:55
por towen
Bueno el Profile Friends List MOD versión 1.2.0 muestra en el perfil una lista de tus amigos ordenados alfabéticamente, y los que no quepan se muestran en otro página mediante una paginación.
Como normalmente los usuarios no revisan el resto de las páginas siempre van a estar en la primera los mismos usuarios, y esta guía es para no se muestren siempre los mismos.
Primero abrir memberlist.php

Buscar:

Código: Seleccionar todo

// friend list mod by ian-taylor.ca


	$user_id = request_var('u', 0);
	$start   = request_var('start', 0);
	$limit = request_var('limit', intval($config['number_friends']));
	$sql = $db->sql_build_query('SELECT', array(
	'SELECT'	=> 'u.user_avatar, u.username, u.user_colour, u.user_avatar_type, u.user_avatar_width, u.user_avatar_height, z.user_id, u.user_regdate, u.user_lastvisit, user_posts, z.zebra_id, z.friend',
	'FROM'		=> array(
		USERS_TABLE		=> 'u',
	),
	'LEFT_JOIN'	=> array(
		array(
			'FROM'	=> array(ZEBRA_TABLE => 'z'),
			'ON'	=> 'u.user_id=z.zebra_id'		
		)
	),
		'WHERE'		=> " u.user_id=z.zebra_id AND z.friend = 1 AND z.user_id = $user_id",
		'ORDER_BY'	=> 'z.zebra_id'
	));
	$result = $db->sql_query_limit($sql, $limit, $start);
         
	while($row_av = $db->sql_fetchrow( $result )) 
	{
		$avatar_friend = get_user_avatar($row_av['user_avatar'], $row_av['user_avatar_type'], $row_av['user_avatar_width'], 		$row_av['user_avatar_height']);
		$friend_id = $row_av['zebra_id'];
		$avatar_size_size = $config['friend_avatar_size'];

		$template->assign_block_vars('fri',array(

      		'FRI_ID'   			=> $row_av['zebra_id'],
      		'FRI_AV'   			=> $avatar_friend,
      		'USERNAME'   		=> $row_av['username'],
      		'WIDTH'				=> $config['friend_avatar_size'],
         	'USER_COLOR' 		=> $row_av['user_colour'],
      		'AV_LINK'   		=> append_sid("{$phpbb_root_path}memberlist.$phpEx", "mode=viewprofile&u=$friend_id"),  
      		'FRI_AV_THUMB'   	=>   ($row_av['user_avatar']) ? get_user_avatar($row_av['user_avatar'], $row_av['user_avatar_type'], ($row_av['user_avatar_width'] > $row_av['user_avatar_height']) ? $avatar_size_size : ($avatar_size_size / $row_av['user_avatar_height']) * $row_av['user_avatar_width'], ($row_av['user_avatar_height'] > $row_av['user_avatar_width']) ? $avatar_size_size : ($avatar_size_size / $row_av['user_avatar_width']) * $row_av['user_avatar_height']) : '',
      		'ONLINE_USER'		=> is_user_online($row_av['zebra_id'])
));
}

    
// count some stuff up for the pagination
$profile = request_var('u', 0);
$sql = 'SELECT COUNT(zebra_id) AS number_friends FROM '. ZEBRA_TABLE ." WHERE user_id=$profile AND friend = 1";
$result = $db->sql_query($sql);
$pagination_friend = append_sid($phpbb_root_path . 'memberlist.' . $phpEx ,'mode=viewprofile&u='.$user_id);

	$total_friends = $db->sql_fetchfield('number_friends');
	$db->sql_freeresult($result);

	$template->assign_vars(array(
    	'FRINATION'        => generate_pagination($pagination_friend, $total_friends, $limit, $start),
    	'PAGE_NUMBER_F'       => on_page($total_friends, $limit, $start),
    	'TOTAL_FRIENDS'       => ($total_friends == 1) ? $user->lang['LIST_FRIEND'] : sprintf($user->lang['LIST_FRIENDS'], $total_friends),
    	'U_VIEW_ALL' 		=> append_sid("{$phpbb_root_path}friend_list.$phpEx", "u=$user_id"),


	));

// end friend list mod by ian-taylor.ca
Y reemplazar por:

Código: Seleccionar todo

// friend list mod by ian-taylor.ca
//modificado por Kazekage para listar  los usuarios aleatorios
	$user_id = request_var('u', 0);
	$limit = request_var('limit', intval($config['number_friends']));

	$sql = $db->sql_build_query('SELECT', array(
	'SELECT'	=> 'u.user_avatar, u.username, u.user_colour, u.user_avatar_type, u.user_avatar_width, u.user_avatar_height, z.user_id, z.zebra_id, z.friend',
	'FROM'		=> array(
		USERS_TABLE		=> 'u',
	),
	'LEFT_JOIN'	=> array(
		array(
			'FROM'	=> array(ZEBRA_TABLE => 'z'),
			'ON'	=> 'u.user_id=z.zebra_id'		
		)
	),
		'WHERE'		=> " u.user_id=z.zebra_id AND z.friend = 1 AND z.user_id = $user_id",
		'ORDER_BY'	=> 'Rand()'
	));
	$result = $db->sql_query_limit($sql, $limit);
	while($row_av = $db->sql_fetchrow($result)) 
	{
	
		$avatar_friend = get_user_avatar($row_av['user_avatar'], $row_av['user_avatar_type'], $row_av['user_avatar_width'], 		$row_av['user_avatar_height']);
		$friend_id = $row_av['zebra_id'];
		$avatar_size_size = $config['friend_avatar_size'];

		$template->assign_block_vars('fri',array(

      		'FRI_ID'   			=> $row_av['zebra_id'],
      		'FRI_AV'   			=> $avatar_friend,
      		'USERNAME'   		=> $row_av['username'],
      		'WIDTH'				=> $config['friend_avatar_size'],
         	'USER_COLOR' 		=> $row_av['user_colour'],
      		'AV_LINK'   		=> append_sid("{$phpbb_root_path}memberlist.$phpEx", "mode=viewprofile&u=$friend_id"),  
      		'FRI_AV_THUMB'   	=>   ($row_av['user_avatar']) ? get_user_avatar($row_av['user_avatar'], $row_av['user_avatar_type'], ($row_av['user_avatar_width'] > $row_av['user_avatar_height']) ? $avatar_size_size : ($avatar_size_size / $row_av['user_avatar_height']) * $row_av['user_avatar_width'], ($row_av['user_avatar_height'] > $row_av['user_avatar_width']) ? $avatar_size_size : ($avatar_size_size / $row_av['user_avatar_width']) * $row_av['user_avatar_height']) : '',
      		'ONLINE_USER'		=> is_user_online($row_av['zebra_id'])
));
}

    
// count some stuff up for the pagination
$profile = request_var('u', 0);
$sql = 'SELECT COUNT(zebra_id) AS number_friends FROM '. ZEBRA_TABLE ." WHERE user_id=$profile AND friend = 1";
$result = $db->sql_query($sql);
$total_friends = $db->sql_fetchfield('number_friends');
$db->sql_freeresult($result);

	$template->assign_vars(array(
    	'TOTAL_FRIENDS'       => ($total_friends == 1) ? $user->lang['LIST_FRIEND'] : sprintf($user->lang['LIST_FRIENDS'], $total_friends),
    	'U_VIEW_ALL' 		=> append_sid("{$phpbb_root_path}friend_list.$phpEx", "u=$user_id"),
	));

// end friend list mod by ian-taylor.ca
Hasta ahora lo que hemos hecho es cambiar el criterio de ordenamiento (ahora es aleatorio) y eliminar la paginación ya que no será necesaria.

Abrir styles/<tu estilo basado en prosilver>/template/memberlist_view.html
Buscar

Código: Seleccionar todo

<div class="panel bg1">
	<div class="inner"><span class="corners-top"><span></span></span>
		<h3>{L_FRIEND_LIST}&nbsp;(<a href="{U_VIEW_ALL}">{L_VIEW_ALL}</a>)</h3>
		<!-- BEGIN fri -->
		<a class="thumbnail" href="{fri.AV_LINK}" style="text-decoration:none">
	<span>

		<!-- IF fri.USER_COLOR --><b style="color:#{fri.USER_COLOR}"> <!-- ELSE --><b style="color:#000;"><!-- ENDIF -->{fri.USERNAME}</b>						<!-- IF fri.ONLINE_USER -->(<strong>{L_ONLINE}</strong>)<!-- ENDIF -->
<br /><!-- IF fri.FRI_AV -->{fri.FRI_AV}</span>{fri.FRI_AV_THUMB} <!-- ELSE --> <img src="{ROOT_PATH}images/no_avatar.gif" alt="noavatar" />

		</span><img src="images/no_avatar.gif" alt="noavatar"  width="{fri.WIDTH}" /><!-- ENDIF -->

		</a>
		<!-- END fri -->
<ul class="linklist">
    <li class="rightside pagination">{TOTAL_FRIENDS} &bull; <!-- IF FRINATION --><a href="#" onclick="jumpto(); return false;" title="{L_JUMP_TO_PAGE}">{PAGE_NUMBER_F}</a> &bull; <span>{FRINATION}</span><!-- ELSE -->{PAGE_NUMBER_F}<!-- ENDIF --></li>
</ul>

<span class="corners-bottom"><span></span></span></div>
	</div>
y reemplazarlo por

Código: Seleccionar todo

<div class="panel bg1">
	<div class="inner"><span class="corners-top"><span></span></span>
		<h3>{L_FRIEND_LIST}&nbsp; &bull; <a href="{U_VIEW_ALL}">{L_VIEW_ALL} ({TOTAL_FRIENDS}</a>)</h3>
		<!-- BEGIN fri -->
		<a class="thumbnail" href="{fri.AV_LINK}" style="text-decoration:none">
	<span>

		<!-- IF fri.USER_COLOR --><b style="color:#{fri.USER_COLOR}"> <!-- ELSE --><b style="color:#000;"><!-- ENDIF -->{fri.USERNAME}</b>						<!-- IF fri.ONLINE_USER -->(<strong>{L_ONLINE}</strong>)<!-- ENDIF -->
<br /><!-- IF fri.FRI_AV -->{fri.FRI_AV}</span>{fri.FRI_AV_THUMB} <!-- ELSE --> <img src="{ROOT_PATH}images/no_avatar.gif" alt="noavatar" />

		</span><img src="images/no_avatar.gif" alt="noavatar"  width="{fri.WIDTH}" /><!-- ENDIF -->

		</a>
		<!-- END fri -->

<span class="corners-bottom"><span></span></span></div>
	</div>
Y eso es todo, solo queda actualizar la plantilla y limpiar la caché.....