phpBB Italia chiude!
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.

Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.

Il nuovo portale di assistenza per l'Italia di phpBB diventa phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.

Grazie ancora,
Carlo - Amministratore di phpBB Italia

User Rank personalizzata non riconosciuta

Supporto per phpBB 3.0.x.
Rispondi
digreo
Utente
Utente
Messaggi: 265
Iscritto il: 02/10/2012, 12:23
Sesso: Maschio
Versione: 3.0.12
Server: UNIX/Linux
PHP: 5.3.16
Database: Mysql
Contatta:

User Rank personalizzata non riconosciuta

Messaggio da digreo » 30/08/2013, 20:18

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="" />');
    }

digreo
Utente
Utente
Messaggi: 265
Iscritto il: 02/10/2012, 12:23
Sesso: Maschio
Versione: 3.0.12
Server: UNIX/Linux
PHP: 5.3.16
Database: Mysql
Contatta:

Re: User Rank personalizzata non riconosciuta

Messaggio da digreo » 30/08/2013, 21:31

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)
	);
Ultima modifica di digreo il 30/08/2013, 21:35, modificato 1 volta in totale.

Avatar utente
Tiger
phpBB Expert
phpBB Expert
Messaggi: 1998
Iscritto il: 24/05/2011, 12:37
Sesso: Maschio
Versione: 3.0.12
Server: UNIX/Linux
PHP: 5.3.28
Database: MySQL(i) 5.5.35-cll
Località: Roma
Contatta:

Re: User Rank personalizzata non riconosciuta

Messaggio da Tiger » 30/08/2013, 21:33

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); 

digreo
Utente
Utente
Messaggi: 265
Iscritto il: 02/10/2012, 12:23
Sesso: Maschio
Versione: 3.0.12
Server: UNIX/Linux
PHP: 5.3.16
Database: Mysql
Contatta:

Re: User Rank personalizzata non riconosciuta

Messaggio da digreo » 30/08/2013, 21:42

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

Avatar utente
Tiger
phpBB Expert
phpBB Expert
Messaggi: 1998
Iscritto il: 24/05/2011, 12:37
Sesso: Maschio
Versione: 3.0.12
Server: UNIX/Linux
PHP: 5.3.28
Database: MySQL(i) 5.5.35-cll
Località: Roma
Contatta:

Re: User Rank personalizzata non riconosciuta

Messaggio da Tiger » 30/08/2013, 23:47

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

digreo
Utente
Utente
Messaggi: 265
Iscritto il: 02/10/2012, 12:23
Sesso: Maschio
Versione: 3.0.12
Server: UNIX/Linux
PHP: 5.3.16
Database: Mysql
Contatta:

Re: User Rank personalizzata non riconosciuta

Messaggio da digreo » 31/08/2013, 1:22

Sei perfetto, ma credo che utilizzerò il mio codice, in quanto non ho bisogno di avere quella funzione in ogni pagina! :*
Grazie infinite!

Rispondi

Torna a “[3.0.x] Forum di Supporto”

Chi c’è in linea

Visitano il forum: Nessuno e 38 ospiti