Vai al contenuto
  • 0

avatar in base al sesso


trattore

Domanda

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 :(

 

 

  • Like 1
Link al commento
Condividi su altri siti

19 risposte a questa domanda

Messaggi raccomandati

  • 0

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

Link al commento
Condividi su altri siti

  • 0

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

Link al commento
Condividi su altri siti

  • 0

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>
Link al commento
Condividi su altri siti

  • 0
<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?

  • Like 2
Link al commento
Condividi su altri siti

  • 0
Inviato (modificato)

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
Link al commento
Condividi su altri siti

  • 0

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
Link al commento
Condividi su altri siti

  • 0

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?

Link al commento
Condividi su altri siti

  • 0
Inviato (modificato)

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
Link al commento
Condividi su altri siti

  • 0

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">
  • Like 1
Link al commento
Condividi su altri siti

Crea un account o accedi per lasciare un commento

Devi essere un membro per lasciare un commento

Crea un account

Iscriviti per un nuovo account nella nostra community. È facile!

Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.

Accedi Ora
  • Chi sta navigando   0 utenti

    • Nessun utente registrato visualizza questa pagina.
×
×
  • Crea Nuovo...

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.