it-swarm-es.tech

¿Cómo extraigo datos de un campo adicional K2 que es una matriz?

Estoy construyendo un sitio que usa campos adicionales K2, pero estoy personalizando la salida para no solo extraer todo el bloque de campo adicional.

Normalmente, algo como esto funciona para campos de entrada única:

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

Pero tengo un campo que es una lista de selección múltiple y quiero colocar toda la matriz en una línea en mi página de elementos.

Soy un poco hack, así que me quedé atrapado en este.

8
Brian Peat

Depende de en qué documento .php se encuentre: si está en item.php o en los archivos category-item.php, lo siguiente debería funcionar.

En la parte superior del documento, agregue este código:

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

Luego, donde quiera llamar al valor del campo completado, use esto:

<?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 funciona de manera un poco diferente, al igual que los módulos K2.

tag.php: no necesita el código adicional en la cabeza, lo siguiente llamará a sus datos de 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; ?>

De nuevo, con el module_k2_content, no necesita la llamada de datos superior. Obtenga sus datos de campo de esta manera:

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

Espero que ayude.

9
Faye

La respuesta de @reactionfaye anterior es correcta. Como referencia, esto ha sido parte de K2 desde noviembre de 2012 :)

Originalmente presentado en esta publicación de blog para el lanzamiento de K2 v2.6.2 ( http://getk2.org/blog/1068-k2-v262-now-available ):

Entonces, ¿cómo generaría directamente campos adicionales individuales en sus anulaciones K2? Simple. Simplemente haga algo como esto (por ejemplo, en item.php) para obtener el nombre de campo adicional:

$ this-> item-> extraFields-> EXTRAFIELDALIASHERE-> name

Para obtener el valor de campo adicional, simplemente debe hacer esto:

$ this-> item-> extraFields-> EXTRAFIELDALIASHERE-> value

Ahora reemplace EXTRAFIELDALIASHERE con el alias real del campo adicional que desea generar.

1
fevangelou