Vai al contenuto

Custom Profile Field, Checkbox e immagini multiple

Featured Replies

Inviato

Ciao a tutti.

Volevo aggiungere la possibilità da parte dei moderatori di assegnare medaglie agli utenti che vincono dei contest sul forum.

 

Ho creato quindi un Custom Profile Field.

Fino quando uso la texarea o il dropdown menù a scelta singola non ci sono problemi.

 

Io vorrei usare le checkbox e avere le scelte multiple.

 

invece di questo:

<span class='row_title'>{title}:</span><span class='row_data'><img src=/awards/{key}.gif'></span>

vorrei qualcosa tipo:

<span class='row_title'>{title}:</span><span class='row_data'>per ogni chiave selezionata mostra:<img src=/awards/{key_selected}.gif'></span>

Quindi una medaglia per ogni chiave.

Risolta da BomAle

Vai alla soluzione
Inviato
  • Autore

Magari la faccio più facile.

 

C'è modo di passare la variabile {content}, che è una stringa dove sono elencati i vari check, nel mio caso "a.gif,b.gif,c.gif", dentro il php per esploderla in un array alla virgola?

<php>$array_awards = explode(",", {content})ecc...</php>
Inviato

non puoi usare php da quell'impostazione.

puoi creare un hook che si aggancia ad un punto di userinfopane (template), e lavorare come piu ti piace.

se riesco piu tardi ti dò una base su cui lavorarci (il gancio/hook)

Inviato
  • Autore

Grazie mille :D.

 

Ma non c'è neanche il modi di accedere ad un determinato {key}?

Tipo {key{0]} ecc...

Inviato

Grazie mille :D.

 

Ma non c'è neanche il modi di accedere ad un determinato {key}?

Tipo {key{0]} ecc...

no neanche, perchè sostituisce "{key}" con la chiave a cui corrisponde la scelta...

campo_checkbox.xml

caricala nel pannello hooks

 

cambia field_18 con field_ID dove "ID" sta per l'id del campo :P

 

poi puoi ottenere il i dati del campo attraverso la cache: (mi baso ora su quello del genere che di solito è il 5)

$pfields = ipsRegistry::cache()->getCache( 'profilefields' );$valori = explode('|', $pfields['5']['pf_content']);//ora $valori è un array tipo array('u=undefined','f=female','m=male')

post-29-0-61371700-1412300353_thumb.png

Inviato
  • Autore

Gentilissimo, ma c'è qualcosa che non riesco a far funzionare perché non mi carica le pagine delle discussioni con l'hook attivo.

if ( $pos !== FALSE )				{					$premi ="";					if(!empty($v['author']['field_12']))					{						$pfields = ipsRegistry::cache()->getCache( 'profilefields' );						$valori = explode('|', $pfields['12']['pf_content']);												foreach ($award as $valori)						{							$premi .= <<<HTML 							<img src='public/awards/{$award}'>							HTML;						}						}															$output = $premi; 
Inviato
  • Soluzione

questa parte è sbagliata questa:

foreach ($award as $valori)						{							$premi .= <<<HTML 							<img src='public/awards/{$award}'>							HTML;						}

occorre usare

						foreach ($valori as $award)						{							list($chiave, $valore) = explode('=',$award);							if(in_array( $chiave, explode('|',$v['author']['field_12']) )){//usa $chiave(u) o $valore("Non espresso")								$premi .= <<<HTML <img src='public/awards/{$chiave}'>HTML;							}						}

$v['author']['field_12'] (è uguale a "|u|m|f|" nel mio caso)

 

e anche in fondo perchè dovresti sostituire:

$output = $premi; 

con

$output = substr_replace( $output, $premi . $tag, $pos, strlen( $tag ) ); $last   = $pos + strlen( $tag . $premi );
Inviato
  • Autore

Grazie mille, sono riuscito a risolvere ^_^

Inviato

sono contento :D

spero sia di aiuto a qualcun altro ;)

Ospite
Questa discussione è chiusa.

Chi sta navigando 0

  • Nessun utente registrato visualizza questa pagina.

Informazioni importanti

Abbiamo inserito dei cookies nel tuo dispositivo per aiutarti a migliorare la tua esperienza su questo sito. Puoi modificare le impostazioni dei cookie, altrimenti puoi accettarli cliccando su continua. to insert a cookie message.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.