Vai al contenuto

Anni e custom field

Featured Replies

Inviato

Mi serve una mano, sto creando un profilo siderbar da mettere nel blocco delle pagine, solo che non sò proprio come prelevare singoli custon field, e sopratutto come prelevare l'età degli utenti...grazie in anticipo.

Risolta da BomAle

Vai alla soluzione
Inviato
  • Autore
{{$gruppi	= array('4');}}
{{$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 ) . ')');}}
{{foreach $members as $member}}{{$member = \IPS\Member::load( $member );}}{$member->age()}{{endforeach}}

Questo estrae gli anni in qualsiasi pagina finalmente ho risolto... ora devo solo trovare il modo di prelevare fi custon field singolarmente

Modificato da trattore

Inviato
  • Autore

RETIFICO, funziona ma rilasciando un tot di utenti, ho preso spunto sul codice di ale..ma quello che voglio è rilasciare una singola età per l utente loggato....

Inviato
  • Soluzione

per l'utente loggato prova con

\IPS\Member::loggedIn()->age()
{{$member = \IPS\Member::loggedIn();}}
{{if $member->bday_year}}<br><span class='ipsType_light'>{lang="member_age" pluralize="$member->age()"}</span>{{endif}}

Invece per i campi profilo puoi utilizzare la funzione "profileFields"

{{$gruppi	= array('4');}}
{{$ordine	= 'member_id DESC';//oppure 'RAND()' o ancora 'last_visit DESC'}}
{{$members	= \IPS\Db::i()->select('m.member_id',array('core_members','m'),'pp_main_photo <> "" AND bday_year <> "" AND ('. \IPS\Db::i()->in( 'member_group_id', $gruppi ) . ' OR ' . \IPS\Db::i()->findInSet( 'mgroup_others', $gruppi ) . ')',$ordine,array( 0, 5 ));}}
{{foreach $members as $member}}
{{$member = \IPS\Member::load( $member );}}
{$member->age()}
{{$ggg=print_r($member->profileFields(),1);}}
<textarea>{$ggg}</textarea>
{{if $pf=$member->profileFields() AND isset($pf['core_pfieldgroups_1']['core_pfield_1'])}}
{$pf['core_pfieldgroups_1']['core_pfield_1']}...
{{endif}}
{{endforeach}}

trat.png.91a752f28e45a56c0464370f78d87ef

Altrimenti se vuoi verificare direttamente tramite la query che un campo non sia vuoto potresti provare con:

{{$members	= \IPS\Db::i()->select('m.member_id',array('core_members','m'),'pp_main_photo <> "" AND bday_year <> "" AND pf.field_1 <> "" AND ('. \IPS\Db::i()->in( 'member_group_id', $gruppi ) . ' OR ' . \IPS\Db::i()->findInSet( 'mgroup_others', $gruppi ) . ')',$ordine,array( 0, 5 ))->join(array('core_pfields_content','pf'),'pf.member_id=m.member_id');}}

nota bene: si utilizza una "join" per integrare un altra tabella in questo caso per i campi profilo, e pf.field_1 <> "" per dare istruzione nella clausola WHERE

Modificato da BomAle

Inviato
  • Autore

finalmente funziona utilizzando questo

{{$member = \IPS\Member::loggedIn();}}

{$member->age()}

grazie mille! ora sarebbe perfetto trovare la soluzione dei field, prelevarli singolarmente... GRAZI ALE!

  • BomAle ha cambiato il titolo in Anni e custom field
Inviato
  • Autore
Il 8/3/2016 at 01:49, BomAle dice:

Invece per i campi profilo puoi utilizzare la funzione "profileFields"


{{$gruppi	= array('4');}}
{{$ordine	= 'member_id DESC';//oppure 'RAND()' o ancora 'last_visit DESC'}}
{{$members	= \IPS\Db::i()->select('m.member_id',array('core_members','m'),'pp_main_photo <> "" AND bday_year <> "" AND ('. \IPS\Db::i()->in( 'member_group_id', $gruppi ) . ' OR ' . \IPS\Db::i()->findInSet( 'mgroup_others', $gruppi ) . ')',$ordine,array( 0, 5 ));}}
{{foreach $members as $member}}
{{$member = \IPS\Member::load( $member );}}
{$member->age()}
{{$ggg=print_r($member->profileFields(),1);}}
<textarea>{$ggg}</textarea>
{{if $pf=$member->profileFields() AND isset($pf['core_pfieldgroups_1']['core_pfield_1'])}}
{$pf['core_pfieldgroups_1']['core_pfield_1']}...
{{endif}}
{{endforeach}}

trat.png.91a752f28e45a56c0464370f78d87ef

Altrimenti se vuoi verificare direttamente tramite la query che un campo non sia vuoto potresti provare con:


{{$members	= \IPS\Db::i()->select('m.member_id',array('core_members','m'),'pp_main_photo <> "" AND bday_year <> "" AND pf.field_1 <> "" AND ('. \IPS\Db::i()->in( 'member_group_id', $gruppi ) . ' OR ' . \IPS\Db::i()->findInSet( 'mgroup_others', $gruppi ) . ')',$ordine,array( 0, 5 ))->join(array('core_pfields_content','pf'),'pf.member_id=m.member_id');}}

nota bene: si utilizza una "join" per integrare un altra tabella in questo caso per i campi profilo, e pf.field_1 <> "" per dare istruzione nella clausola WHERE

ciao ale grazie mille, ho provato a inserire il tutto ma rilascia tutti i dati degli utenti, posso anche scegliere di visualzizzare un singolo field e funziona, ma io cerco il modo come per l'età di prelevare il singolo fild dell'utente loggato che visualizza il sito, prima sulla vecchia versione bastava inserire una cosa così {$member='core_pfield_26'} e tirilasciava il dato

Inviato
  • Autore

Perfetto!!! basta inserire questo codice.. PER I PROFILI SINGOLI

{{$member = \IPS\Member::loggedIn();}}
{{if $pf=$member->profileFields() AND isset($pf['core_pfieldgroups_ID FIELD']['core_pfield_ID FIELD'])}}
{$pf['core_pfieldgroups_ID GRUPPO']['core_pfield_ID FIELD']}
{{endif}}

GRAZIE ANCORA

Inviato

in ogni modo provo a ottenere informazioni a riguardo perchè differentemente dalla 3.x la variabile member offre solo alcuni parametri limitati alla tabella core_members (senza ad esempio avere la possibilità di ricavare i campi profilo direttamente dal metodo load).

  • 3 settimane dopo...

Per favore accedi per lasciare un commento

Potrai lasciare un commento dopo aver effettuato l'accesso

Accedi Ora

Chi sta navigando 0

  • Nessun utente registrato visualizza questa pagina.

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.