Vai al contenuto

avatar in base al sesso

Featured Replies

Inviato

Ciao, stavo pensando se è possibile che sugli avatar di default si potesse in qualche modo prelevare le info sul sesso degli utenti, in sostanza se un utente è femmina, venisse innserito un avatar femminile e cosi via per gli altri sesso, cosi ho dato uno sguardo su userInfopanel e su questo codice:

 <if test="avatar:|:$author['member_id']">  	<li class='avatar'>				<if test="canSeeProfiles:|:$this->memberData['g_is_supmod'] OR ( $this->memberData['g_mem_info'] && ! IPSMember::isInactive( $author ) )">				<a itemprop="url" href="{parse url="showuser={$author['member_id']}" template="showuser" seotitle="{$author['members_seo_name']}" base="public"}" title="{$this->lang->words['view_profile']}: {$author['members_display_name']}" class='ipsUserPhotoLink'>				</if>				<if test="hasVariable:|:$this->settings['member_topic_avatar_max']">  <img itemprop="image" src='{$author['pp_main_photo']}' class='ipsUserPhoto ipsUserPhoto_variable' />				<else /><img itemprop="image" src='{$author['pp_thumb_photo']}' class='ipsUserPhoto ipsUserPhoto_large' />				</if>				<if test="canSeeProfiles2:|:$this->memberData['g_is_supmod'] OR ( $this->memberData['g_mem_info'] && ! IPSMember::isInactive( $author ) )">				</a>				</if>			</li>		<else />			<li class='avatar'><img itemprop="image" src='{$author['pp_thumb_photo']}' class='ipsUserPhoto ipsUserPhoto_large' />			</li>		</if>

ho sostituito con :

<if test="avatar:|:$author['member_id'] AND !$author['avatar']">				<if test="gender:|:$author['field_5'] == 'f'"><li class='avatar'><a href="{parse url="showuser={$author['member_id']}" template="showuser" seotitle="{$author['members_seo_name']}" base="public"}" title="{$this->lang->words['view_profile']}"><img src="{style_images_url}/avatar_femmina.jpg"></a></li>				</if><if test="gender:|:$author['field_5'] == 'm'"> <li class='avatar'><a href="{parse url="showuser={$author['member_id']}" template="showuser" seotitle="{$author['members_seo_name']}" base="public"}" title="{$this->lang->words['view_profile']}"><img src="{style_images_url}/avatar_maschio.jpg"></a></li> </if>				<if test="gender:|:$author['field_5'] == 'u'"> <li class='avatar'><a href="{parse url="showuser={$author['member_id']}" template="showuser" seotitle="{$author['members_seo_name']}" base="public"}" title="{$this->lang->words['view_profile']}"><img src="{style_images_url}/profile/default_large.png"></a></li> </if></if>		<if test="avatar:|:$author['member_id'] AND $author['avatar']">			<li class='avatar'><a href="{parse url="showuser={$author['member_id']}" template="showuser" seotitle="{$author['members_seo_name']}" base="public"}" title="{$this->lang->words['view_profile']}">{$author['avatar']}</a></li><else />			<li class='avatar'>{$author['avatar']}</li>		</if>

Ora il risultato e che si vede in base al sesso l avatar ma la pecca e che sovrascrive anche gli utenti che mettono un avatar a lloro piacimento, in sostanza non puoi piu mettere nessun avatar... ho provato un po a smanettare su ipsMember.php in /admin/sources/base ma niente... perche mi sovrascrive le immagini di non default :(

 

 

Inviato

devi fare un confronto if else dove devi verificare che l'avatar che possiede l'utente non sia quello di default (cioè non modificato)

tra un pò arrivo al pc e trovo le info che ti occorrono ;)

Inviato
  • Autore

il campo pp_main_photo preleva sia l'immagine di default che quella a piacimeto devi per forza modificare il file php secondo me,la vedo dura

Inviato

cambia

<img itemprop="image" src='{$author['pp_main_photo']}' class='ipsUserPhoto ipsUserPhoto_variable' />

in

<php>$this->av_unset_large = "{style_image_url}/profile/default_large.png";$this->av_unset_thumb = "{style_image_url}/profile/default_thumb.png";//TEST ALTERNATIVO//$av_guest[] = IPSMember::buildProfilePhoto( 0 );//echo'<textarea>';print_r($av_guest[0]['pp_main_photo']);echo'</textarea>';//echo'<textarea>';print_r($author);echo'</textarea>';</php><if test="$author['pp_main_photo'] == $this->av_unset_large || $author['pp_main_photo'] == $this->av_unset_thumb">avatar con gender se non impostato<else />avatar personale</if>

oppure potresti comprare questo plugin http://community.invisionpower.com/files/file/6785-default-photo-per-gender/ che lo fa anche per gli altri template

 

EDIT: Ho trovato quello che fa per te :P

<if test="!$author['_has_photo']">avatar con gender se non impostato<else />avatar personale</if>
Inviato
  • Autore

grazie mille ti faccio sapere

Inviato
  • Autore

scusa ma in avatar personale che metto

Inviato
<if test="hasVariable:|:$this->settings['member_topic_avatar_max']"> <img itemprop="image" src='{$author['pp_main_photo']}' class='ipsUserPhoto ipsUserPhoto_variable' /><else /><img itemprop="image" src='{$author['pp_thumb_photo']}' class='ipsUserPhoto ipsUserPhoto_large' /></if>

diventa più o meno

<if test="hasVariable:|:$this->settings['member_topic_avatar_max']">  <if test="!$author['_has_photo']">  avatar con gender se non impostato <else />  <img itemprop="image" src='{$author['pp_main_photo']}' class='ipsUserPhoto ipsUserPhoto_variable' /> </if><else /> <if test="!$author['_has_photo']">  avatar con gender se non impostato <else />  <img itemprop="image" src='{$author['pp_thumb_photo']}' class='ipsUserPhoto ipsUserPhoto_large' /> </if></if>

ok?

Inviato
  • Autore

che dire BRUTALE ... GRZ MILLE... 10 PUNTI IN PIU PER TE! :D

ps:non ce un modo di far apparire  gli avatar in base al sesso anche sugli stati,sulla pagina magari di ip.content

Modificato da trattore

Inviato

ps:non ce un modo di far apparire  gli avatar in base al sesso anche sugli stati,sulla pagina magari di ip.content

vai nel template userSmallPhoto nel gruppo dei "globali"

aggiungi in cima al template il codice seguente (che inserisce il campo "field_5" e "_has_photo" nell'array $member)

<php>$member_fields = IPSMember::load($member, 'customFields');$member_photo = IPSMember::buildDisplayData( $member, array('photoTagSize')); //buildDisplayData( $member, array('photoTagSize'))$member = array_merge($member, array( 'field_5' => $member_fields[ $member['member_id'] ]['field_5']),array( 'photo' => $member_photo['_has_photo']));if($member['_has_photo'] == '0'){if($member['field_5'] == 'm'){$member['pp_small_photo'] = '{style_images_url}/avatar_maschio.jpg';}elseif($member['field_5'] == 'f'){$member['pp_small_photo'] = '{style_images_url}/avatar_femmina.jpg';}elseif($member['field_5'] == 'u' || $member['field_5'] == ''){$member['pp_small_photo'] = '{style_images_url}/profile/default_large.png';}}//echo'<textarea>';print_r($member);echo'</textarea>';</php>
ps: alcuni utenti mi risultano che non abbiano ne "f" ne "m" ne "u" quindi ho corretto un attimo anche il codice... se ci sono problemi fammi sapere...

 

ps2: purtroppo questo funziona sugli stati ma non ovunque... perchè ad esempio in boardIndexTemplate al userSmallPhoto vengono passati solo 5 parametri... occorre fare un ipsmember::load se i dati non ci sono e quindi ti avviso che in questo modo si consumano risorse! dimmi se vuoi fare una prova e ti rilascio una versione più completa!

EDIT: ecco il codice... cosi provi tu stesso quanto rallenta (a me circa 0.02 in più nell'indice)

<php>if(!$member['_has_photo']){$member_photo = IPSMember::buildProfilePhoto( $member['member_id'] );}else{$member_photo['_has_photo'] = $member['_has_photo'];}if(!$member['field_5']){$member_fields = IPSMember::load($member, 'pfields_content');}else{$member_fields[ $member['member_id'] ]['field_5'] = $member['field_5'];}$member = array_merge($member, array( 'field_5' => $member_fields[ $member['member_id'] ]['field_5']), array( '_has_photo' => $member_photo['_has_photo']));if($member['_has_photo'] == '0'){if($member['field_5'] == 'm'){$member['pp_small_photo'] = '{style_images_url}/avatar_maschio.jpg';}elseif($member['field_5'] == 'f'){$member['pp_small_photo'] = '{style_images_url}/avatar_femmina.jpg';}elseif($member['field_5'] == 'u' || $member['field_5'] == ''){$member['pp_small_photo'] = '{style_images_url}/profile/default_large.png';}}//echo'<textarea>';print_r($member);echo'</textarea>';</php>

Modificato da BomAle

Inviato
  • Autore

Non appare nnulla, forse sbaglio qualcosa, ma questo :

<php>if(!$member['_has_photo']){$member_photo = IPSMember::buildProfilePhoto( $member['member_id'] );}else{$member_photo['_has_photo'] = $member['_has_photo'];}if(!$member['field_5']){$member_fields = IPSMember::load($member, 'pfields_content');}else{$member_fields[ $member['member_id'] ]['field_5'] = $member['field_5'];}$member = array_merge($member, array( 'field_5' => $member_fields[ $member['member_id'] ]['field_5']), array( '_has_photo' => $member_photo['_has_photo']));if($member['_has_photo'] == '0'){if($member['field_5'] == 'm'){$member['pp_small_photo'] = '{style_images_url}/avatar_maschio.jpg';}elseif($member['field_5'] == 'f'){$member['pp_small_photo'] = '{style_images_url}/avatar_femmina.jpg';}elseif($member['field_5'] == 'u' || $member['field_5'] == ''){$member['pp_small_photo'] = '{style_images_url}/profile/default_large.png';}}//echo'<textarea>';print_r($member);echo'</textarea>';</php>

dove va inserito?

Inviato

in cima nel usersmallphoto 

Inviato
  • Autore

PERFECT grazie infinite sei un dio.. sarebbe fantastico ora se apparissero anche sulla pagina dei profili

Inviato

lo stesso codice va messo in cima al template profileModern che si trova nel gruppo "Profili" (in inglese "Profiles")

 

;)

post-29-0-90559100-1398301928_thumb.png

Inviato
  • Autore

pultroppo inserendo tutto nei profili non appare niente =(

Inviato

a si scusa, a posto di pp_small_photo devi mettere pp_main_photo

Inviato
  • Autore

perfect.... grazie x tutto  :D  :D  :D  :D  :D

ho notato che se uso record non riescie a prelevare l immagine ad esempio.

<img src='{$record['pp_small_photo']}' alt="{parse expression="sprintf($this->lang->words['users_photo'],$record['members_display_name'])"}" class='ccsUserPhoto_small1' />

mi da il vuoto
 

Modificato da trattore

Inviato

in questo caso devi modificare il codice php... perchè non hai $member['member_id'] ma $record['member_id'].... 

Inviato
  • Autore

Sarebbe bello scoprire come si fa pero ;)

Inviato

Sarebbe bello scoprire come si fa pero ;)

fai una prova tu stesso, metti

<php>foreach($records as $record){echo'<textarea>';print_r($record['member_id']);echo'</textarea>';}</php>

ps: non so se devi usare $data['records'] o $records, basta che trovi uno dei due nel template che hai in uso e utilizza quello che già c'è!

dovrebbero uscire i numeri/id degli utenti... stavolta devi usare un foreach se metti il codice in cima...

 

altrimenti dovresti piazzarlo subito dopo il tag, ok?

<foreach loop="$data['records'] as $record">
Inviato
  • Autore

provo

non ci riesco mannAggia

Modificato da trattore

Per favore accedi per lasciare un commento

Potrai lasciare un commento dopo aver effettuato l'accesso

Accedi Ora

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.