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


8

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.

Risposte:


9

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


Sono in item.php e tutto ha funzionato. Grazie!
Brian Peat,

Nessun problema!!! Ho trascorso molte ore a capirlo, felice che potesse aiutare qualcun altro.
Faye,

Cordiali saluti, quel codice è stato originariamente scritto per me dalla Giordania. È anche qui, conosce cose fantastiche e fa funzionare le cose per me quando sembro che sto per piangere. joomla.stackexchange.com/users/75/jordan-ramstad
Faye

1

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.


-3

Questo può essere fatto ora con una sostituzione della lingua, evitando di sovrascrivere i tuoi hack quando aggiorni K2. Cerca la costante K2_DATE_FORMAT_LC

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.