Vai al contenuto
  • 0

estrarre lista foto utenti


trattore

Domanda

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 .

Link al commento
Condividi su altri siti

17 risposte a questa domanda

Messaggi raccomandati

  • 0

<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

  • Like 1
Link al commento
Condividi su altri siti

  • 0

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

  • Like 1
Link al commento
Condividi su altri siti

  • 0

è 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')"

Link al commento
Condividi su altri siti

  • 0

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.

  • Like 1
Link al commento
Condividi su altri siti

  • 0

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?

Link al commento
Condividi su altri siti

  • 0

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.

  • Like 1
Link al commento
Condividi su altri siti

  • 0
Inviato (modificato)

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

  • 0

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

Link al commento
Condividi su altri siti

  • 0

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

Modificato da trattore
  • Like 2
Link al commento
Condividi su altri siti

  • 0
Inviato (modificato)

Ciao se posiziono in 

member_id DESC

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

Modificato da trattore
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.