Jump to content
trattore

estrarre lista foto utenti

Recommended Posts

trattore

Eccomi,salve ragazzi,sto per chiedervi a mio avviso forseuna cosa difficilissima da fare, ma ci provo.

Quello  che vorrei fare e di creare un blocco da posizionare nel global templare,e questo blocco deve rilasciarmi una lista un numero, es:10 utenti solo con le foto da loro caricate come avatar, ho guardato su filtro utenti e questa opzione ce, sapete darmi una mano? :o o e troppo complicato da mettere in atto.

Grazie  in anticipo .

Share this post


Link to post
Share on other sites
BomAle

è semplice... in quale ordine li vuoi, descrescente (dai + recenti) o ascendente (dai primi registrati)?

 

intanto la funzione build che include la query è:

<php>$risultato = $this->DB->buildAndFetchAll(array(    'select'    => '*',    'from'        => array('members' => 'm'),    'calcRows'    => true,    'add_join' => array(            array(        'select' => 'pp.pp_main_photo',            'from' => array('profile_portal' => 'pp'),            'where' => 'pp.pp_member_id=m.member_id',        ),    ),    'where'     => "pp.pp_main_photo <> ''",    'order'        => "m.member_id DESC",    'limit'        => array( 0, 10 )));echo'<textarea>max: ';echo $this->DB->fetchCalculatedRows();echo"(utile x paginare)\n\n";print_r($risultato);echo'</textarea>';</php>

PS:non rileva gli avatar caricati via gravatar...

in questo caso puoi aggiungere alla fine della stringa 'where' " OR (pp.pp_gravatar <> '' AND pp.pp_photo_type='gravatar')"

Share this post


Link to post
Share on other sites
BomAle

Ciao potresti testarlo? perche a me rilascia un errore... :( grz

puoi dirmi che errore ti da? ho testato anche ora e funziona... mettilo semplicemente nel globalTemplate, se hai fatto diversamente... restituisce un campo di testo con scritte le informazioni del risultato.

Share this post


Link to post
Share on other sites
BomAle

bene, anche a me mostra questo :D

per il resto (creare la hook o blocco) spetta a te :P

ps: GUARDA ALL'INTERNO DEL TEXTAREA (CAMPO DI TESTO), scorrilo e vedrai un "array" con dentro 10 voci ciascuna rappresenta un utente che ha una foto caricata nel forum!

max: 214 indica che ci sono 214 riscontri di cui solo 10 estratti secondo il "limit"...

post-29-0-63247900-1405799814_thumb.jpg

 

per rimuovere gli errori devi togliere la parte con "echo....print_r........." e aggiungere $risultato in cicli foreach() per andare avanti col tuo codice. se hai ip.content "formattare" le informazioni che vengono restituite dovrebbe essere più semplice perchè puoi attaccarti a dei template standard. spero di averti aiutato.

Share this post


Link to post
Share on other sites
trattore

grazie x il supporto, ma nn so proprio  come agire, a me interessava pelevare solo l immagine e metterla su global,quel codice rilascia il nomi del img, nn si puo sfruttare il campo if? ad esempio

<if test="$record['member_id']"><a href='{parse url="showuser={$record['member_id']}" seotitle="{$record['members_seo_name']}" template="showuser" base="public"}' title='{$this->lang->words['view_profile']}'><img src='{$record['pp_small_photo']}' alt="{parse expression="sprintf($this->lang->words['users_photo'],$record['members_display_name'])"}" class='ccsUserPhoto_small1' /></a></if>
Edited by trattore

Share this post


Link to post
Share on other sites
BomAle

<php>$this->risultato = $this->DB->buildAndFetchAll(array(    'select'    => 'm.member_id',    'from'        => array('members' => 'm'),    'calcRows'    => true,    'add_join' => array(            array(            'from' => array('profile_portal' => 'pp'),            'where' => 'pp.pp_member_id=m.member_id',        ),    ),    'where'     => "pp.pp_main_photo <> ''",    'order'        => "m.member_id DESC",    'limit'        => array( 0, 10 )));$this->max_ris = $this->DB->fetchCalculatedRows();</php><div class='ipsSideBlock clearfix' id='statusHook'>	<h3 data-tooltip="In tutto sono presenti: {$this->max_ris}">Ultimi 10 utenti con Foto</h3>	<div class='_sbcollapsable'>		<ul class='ipsList_withminiphoto'>		<foreach loop="$this->risultato as $r">		<li class='clearfix'><php>$r = IPSMember::load( $r['member_id'], 'extendedProfile' );$r['pp_small_photo'] = $this->settings['upload_url'] . '/' . $r['pp_thumb_photo'];</php>			{parse template="userSmallPhoto" group="global" params="$r"}			<div class='list_content'>				<a href='{parse url="showuser={$r['member_id']}" seotitle="{$record['members_seo_name']}" template="showuser" base="public"}' rel='bookmark' class='ipsType_small' title="{$this->lang->words['view_profile']}">{parse template="userHoverCard" group="global" params="$r"}</a>				<p class='desc ipsType_smaller'>					ALTRO				</p>			</div>		</li>		</foreach>		</ul>	</div></div>
post-29-0-37142700-1405870943_thumb.png

ecco questo lo puoi mettere ovunque vuoi nei template... ti lascio anche uno screen qui sopra

Share this post


Link to post
Share on other sites
trattore

Ciao ale grazie per la disponibilità, ti aggiorno su quello che vorrei fare, vorrei come questa modifica estrarre la lista degli utenti con le foto, pero usando solo utenti di un determinato gruppo, ad esempio un gruppo che ho nominato femmine in qui vengono inseriti solo gli utenti femminili...mi chiedevo se era fattibile un aggiornamento a questa modifica così, e poi anche mettere questa list di foto in modo casuale cioè invece di mostrare l ultimo utente registrato, prelevare un tot di utenti con foto al gruppo femminile del tutto casuale...ma forse chiedo troppo

Share this post


Link to post
Share on other sites
BomAle

Ecco, ho aggiunto come hai chiesto la disponibilità di filtrare random i risultati...

{{$gruppi	= array('4');}}
{{$ordine	= 'member_id DESC';//oppure 'RAND()' o ancora 'last_visit DESC'}}
{{$members	= \IPS\Db::i()->select('member_id','core_members','pp_main_photo <> "" AND ('. \IPS\Db::i()->in( 'member_group_id', $gruppi ) . ' OR ' . \IPS\Db::i()->findInSet( 'mgroup_others', $gruppi ) . ')',$ordine,array( 0, 5 ));}}

{{if !empty( $members ) }}
<h3 class='ipsWidget_title ipsType_reset'>Donne con foto</h3>
<div class='ipsPad_half ipsWidget_inner'>
	<ul class='ipsDataList ipsDataList_reducedSpacing'>
		{{foreach $members as $member}}
      {{$member = \IPS\Member::load( $member );}}
		<li class='ipsDataItem'>
			<div class='ipsDataItem_icon ipsPos_top'>
				{template="userPhoto" group="global" app="core" params="$member, 'tiny'"}
			</div>
			<div class='ipsDataItem_main'>
				<div class="ipsCommentCount ipsPos_right {{if ( $member->member_posts ) === 0}}ipsFaded{{endif}}" data-ipsTooltip title='Post inviati: {$member->member_posts}'>{$member->member_posts}</div>
				{$member->link()|raw}<br>
				<span class='ipsType_light ipsType_small'> {$member->joined}</span>
			</div>
		</li>
		{{endforeach}}
	</ul>
</div>
{{endif}}

se hai l'app Pages lo puoi copiare e incollare li e aggiungere il widget dove vuoi, tieni conto che ho testato in sidebar... ma potresti inserirlo ovunque...

Share this post


Link to post
Share on other sites
trattore

Funziona perfettamente, non so come ringraziarti ...grazie infinite!

Edited by trattore

Share this post


Link to post
Share on other sites
trattore

Ciao se posiziono in 

member_id DESC

che signifca è possibile mettere quelli online? o magari quelli con ultima visita

Edited by trattore

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Crea Nuovo...

Important Information

By using this site, you agree to our Terms of Use.