Vai al contenuto
trattore

3.4 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 .

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
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')"

Condividi questo messaggio


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

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
trattore

una volta meso il codice dove hai detto mi rilascia questo errore

 

post-942-0-41360600-1405793247_thumb.jpg

mi daresti un anteprima dove l hai provato?

Condividi questo messaggio


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

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
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>
Modificato da trattore

Condividi questo messaggio


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

Condividi questo messaggio


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

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
BomAle

nessun problema, si possono filtrare per gruppi... anche mettere in ordine di ultima attivitá o addirittura random.

Condividi questo messaggio


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

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
trattore

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

Modificato da trattore

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
trattore

Ciao se posiziono in 

member_id DESC

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

Modificato da trattore

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

×