it-swarm.it

Come estraggo i dati da un campo aggiuntivo K2 che è un array?

Sto costruendo un sito che utilizza campi extra K2, ma sto personalizzando l'output, quindi non sto semplicemente tirando l'intero blocco di campi extra.

Normalmente qualcosa del genere funziona per singoli campi di immissione:

<?php if($this->item->extraFields->streetaddressone->value != ''): ?>
 <span class="itemExtraFieldsValue Address1"><?php echo $this->item->extraFields->streetaddressone->value ?></span>
  <?php endif; ?>

Ma ho un campo che è un elenco a selezione multipla e voglio inserire l'intero array in una riga nella pagina del mio articolo.

Sono un po 'un hack, quindi sono rimasto bloccato su questo.

8
Brian Peat

Dipende dal documento .php in cui ti trovi - se ti trovi in ​​item.php, o nei file category-item.php, dovrebbe funzionare quanto segue.

Nella parte superiore del documento, aggiungi questo codice:

<!-- Call to prepare extra fields --> 
<?php  
$extrafields = array();
foreach($this->item->extra_fields as $item)
{    
$extrafields[$item->id] = $item->value;
}   
?>

Quindi, ovunque tu voglia chiamare il valore del campo compilato, usa questo:

<?php if($extrafields[ID_NUMBER_OF_FIELD]!=''):?> <!-- if filled in, then call data -->
<?php echo $extrafields[ID_NUMBER_OF_FIELD];?> <!-- actual data call -->
<?php endif; ?>

tag.php funziona in modo leggermente diverso, così come i moduli K2.

tag.php - non è necessario il codice aggiuntivo in testa, quanto segue chiamerà i dati del campo.

<?php $extrafields = json_decode($item->extra_fields);?>
<?php foreach($extrafields as $key=>$value): ?>
<?php if($extrafields[$key]->id == 'ID_NUMBER_OF_FIELD'&&$extrafields[$key]->value!=''): ?>
<?php echo $extrafields[$key]->value; ?>,
<?php endif; ?> 
<?php endforeach; ?>

Ancora una volta, con module_k2_content, non è necessaria la prima chiamata di dati. Ottieni i dati sul campo in questo modo:

<?php echo $item->extraFields->ALIAS_OF_FIELD->value ;?>

Spero che sia d'aiuto.

9
Faye

La risposta di @reactionfaye sopra è corretta. Per riferimento, questo fa parte del K2 dal novembre 2012 :)

Originariamente introdotto in questo post del blog per il rilascio di K2 v2.6.2 ( http://getk2.org/blog/1068-k2-v262-now-available ):

Quindi, come potreste produrre direttamente singoli campi extra nelle vostre sostituzioni K2? Semplice. Basta fare qualcosa del genere (ad esempio in item.php) per ottenere il nome del campo aggiuntivo:

$ This-> item-> extraFields-> EXTRAFIELDALIASHERE-> nome

Per ottenere il valore del campo aggiuntivo devi semplicemente fare questo:

$ This-> item-> extraFields-> EXTRAFIELDALIASHERE-> Valore

Ora sostituisci EXTRAFIELDALIASHERE con l'alias effettivo del campo aggiuntivo che desideri produrre.

1
fevangelou