Pagina 1 di 1

User Rank personalizzata non riconosciuta

Inviato: 30/08/2013, 20:18
da digreo
Premessa: voglio visualizzare la rank nell'index (quindi il discorso non è valido per il topic in cui tutto funziona correttamente).
Ho impostato una rank a 1 messaggio, ma provando l'utente con queste caratteristiche non visualizza la rank.
Ho utilizzato il seguente codice:

Codice: Seleziona tutto

$rank_id = $user->data['user_rank'];
$ranksql = 'SELECT rank_id, rank_title, rank_image FROM ' . RANKS_TABLE . ' WHERE rank_id = ' . $rank_id;
$rankres = $db->sql_query($ranksql);
while ($rankrow = $db->sql_fetchrow($rankres))
{
	$template->assign_vars(array(
		'RANKTIT' => $rankrow['rank_title'],
		'RANKIMG' => $rankrow['rank_image'])
	);
}
$db->sql_freeresult($rankres);
Per l'Amministratore e il Moderatore lo script funziona, mentre per le rank non speciali $user->data['user_rank'] è sempre uguale a 0. Strano.. o no?

Mi viene da pensare che $user->data['user_rank'] riconosce soltanto quelle speciali e che per accedere a tutte le rank c'è bisogno della funzione get_user_rank().
Ho trovato questo codice per chi voleva fare la mia medesima cosa:

Codice: Seleziona tutto

if (!function_exists('get_user_rank'))
    {
        include_once($phpbb_root_path . 'includes/functions_display.' . $phpEx);
    }

    get_user_rank($user->data['user_rank'], $user->data['user_posts'], $rank_title, $rank_img, $rank_img_src, $user->data['user_rank_theme']);
    
    if (isset($rank_img_src))
    {
        $template->assign_var('USER_RANK_IMAGE', '<img src="' . $rank_img_src . '" alt="" />');
    }
   
   get_user_additional_rank($user->data['user_rank'], $user->data['user_posts'], $extra_rank_title, $extra_rank_img, $extra_rank_img_src, $user->data['user_rank_theme']);
    
    if (isset($extra_rank_img_src))
    {
        $template->assign_var('USER_RANK_IMAGE_EXTRA', '<img src="' . $extra_rank_img_src . '" alt="" />');
    }

Re: User Rank personalizzata non riconosciuta

Inviato: 30/08/2013, 21:31
da digreo
RISOLTO posso inserire nel template il normalissimo codice:

Codice: Seleziona tutto

<div <!-- IF RANKTIT -->title="{RANKTIT}"<!-- ENDIF --> class="tcenter"><!-- IF RANKIMG --><img src="{BOARD_URL}images/ranks/{RANKIMG}" /><!-- ELSE IF RANKTIT -->{RANKTIT}<!-- ENDIF --></div>
...Con questo codice, nel file php, che non contiene function_display (che ha la function get_user_rank().. leggermente diverso da questo codice):

Codice: Seleziona tutto

global $cache;
	$ranks = $cache->obtain_ranks();
	$user_rank = $user->data['user_rank'];
	$user_posts = $user->data['user_posts'];
	if (!empty($user_rank))
	{
		$rank_title = (isset($ranks['special'][$user_rank]['rank_title'])) ? $ranks['special'][$user_rank]['rank_title'] : '';
		$rank_img_src = (!empty($ranks['special'][$user_rank]['rank_image'])) ? $ranks['special'][$user_rank]['rank_image'] : '';
	}
	else if ($user_posts !== false)
	{
		if (!empty($ranks['normal']))
		{
			foreach ($ranks['normal'] as $rank)
			{
				if ($user_posts >= $rank['rank_min'])
				{
					$rank_title = $rank['rank_title'];
					$rank_img_src = (!empty($rank['rank_image'])) ? $rank['rank_image'] : '';
					break;
				}
			}
		}
	}
	$template->assign_vars(array(
		'RANKTIT' => $rank_title,
		'RANKIMG' => $rank_img_src)
	);

Re: User Rank personalizzata non riconosciuta

Inviato: 30/08/2013, 21:33
da Tiger
Bastava che utilizzassi questa funzione gia' esistente ,ed inserirla nel functions.php della cartella includes per visualizzare il rank speciale dapertutto. ;)

Codice: Seleziona tutto

// Get variables for rank title and rank image for Normal Rank by Tiger
$rank_title = $rank_img = '';
            get_user_rank($user->data['user_rank'], $user->data['user_posts'], $rank_title, $rank_img, $rank_img_src); 

Re: User Rank personalizzata non riconosciuta

Inviato: 30/08/2013, 21:42
da digreo
ti sei dimenticato di passare le variabili

Codice: Seleziona tutto

$template->assign_vars(array(
      'RANKTIT' => $rank_title,
      'RANKIMG' => $rank_img)
   );
..che cmq avresti potuto passarle dal file php :D

Re: User Rank personalizzata non riconosciuta

Inviato: 30/08/2013, 23:47
da Tiger
digreo ha scritto:ti sei dimenticato di passare le variabili

Codice: Seleziona tutto

$template->assign_vars(array(
      'RANKTIT' => $rank_title,
      'RANKIMG' => $rank_img)
   );
..che cmq avresti potuto passarle dal file php :D

Mi sembrava ovvio che dopo quel codice le variabili te le calcolavi da te....

Oppure:

Codice: Seleziona tutto

'RANK_TITLE_DIGREO'             => $rank_title,
        'RANK_IMG_SRC'                  => $phpbb_root_path . 'images/ranks/' . $rank_img,
        'RANK_IMG_SRC_DIGREO'          => $rank_img_src, 

Codice: Seleziona tutto

<div style="text-align:center; font-size:14px;"><!-- IF RANK_TITLE_DIGREO --><a>{RANK_TITLE_DIGREO}</a><!-- ENDIF --></div>
            <div style="text-align:center;"><!-- IF RANK_IMG_SRC --><a><img src="{RANK_IMG_SRC_DIGREO}" alt="" /></a><!-- ELSEIF RANK_IMG_SRC --><a><img src="{RANK_IMG_SRC}" alt="" /></a><!-- ENDIF --></div>	
a suo remoto tempo gia' fu ideato per questa mod qui. ;) :-) 8-)
https://www.phpbb.com/community/viewtop ... &t=2183695

Re: User Rank personalizzata non riconosciuta

Inviato: 31/08/2013, 1:22
da digreo
Sei perfetto, ma credo che utilizzerò il mio codice, in quanto non ho bisogno di avere quella funzione in ogni pagina! :*
Grazie infinite!