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

8

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.

Brian Peat
fuente

Respuestas:

9

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 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; ?>

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

Faye
fuente
Estoy en item.php y eso funcionó totalmente. ¡Gracias!
Brian Peat
¡¡¡No hay problema!!! Pasé muchas horas resolviendo esto, contento de que pudiera ayudar a alguien más.
Faye
Para su información, ese código fue escrito originalmente para mí por Jordan. Él está aquí también, sabe cosas increíbles y hace que las cosas funcionen para mí cuando parece que estoy a punto de llorar. joomla.stackexchange.com/users/75/jordan-ramstad
Faye
1

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.

fevangelou
fuente
-3

Esto se puede hacer con un reemplazo de idioma ahora, evitando sobrescribir sus hacks cuando actualiza K2. Busque la constante K2_DATE_FORMAT_LC

shanDB
fuente