Vai al contenuto
trattore

3.4 avatar in base al sesso

Recommended Posts

trattore

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

 

 

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
BomAle

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

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
trattore

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

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
BomAle

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>

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
BomAle
<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?

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
trattore

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

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
BomAle

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

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
trattore

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?

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
trattore

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

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
BomAle

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

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
trattore

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

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
BomAle

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

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
BomAle

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">

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

You need to be a member in order to leave a comment

Crea un account

Iscriviti per un nuovo account nella nostra comunità. È facile!

Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.

Accedi Ora

×