ti-enxame.com

Como extrair dados de um campo extra K2 que é uma matriz?

Estou construindo um site que usa campos extras K2, mas estou personalizando a saída para não apenas extrair todo o bloco de campo extra.

Normalmente, algo assim 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; ?>

Mas eu tenho um campo que é uma lista de seleção múltipla e quero puxar toda a matriz para uma linha na minha página de item.

Eu sou um pouco maluco, então fiquei preso nesse.

8
Brian Peat

Depende do documento .php em que você está - se você estiver no item.php ou nos arquivos category-item.php, o seguinte deverá funcionar.

Na parte superior do documento, adicione este código:

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

Então, onde você quiser chamar o valor do campo preenchido, use o seguinte:

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

o tag.php funciona de maneira um pouco diferente, assim como os módulos K2.

tag.php - você não precisa do código extra na cabeça, o seguinte chamará seus dados 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; ?>

Novamente, com o module_k2_content, você não precisa da chamada de dados principal. Obtenha seus dados de campo desta maneira:

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

Espero que ajude.

9
Faye

A resposta de @reactionfaye acima está correta. Para referência, isso faz parte do K2 desde novembro de 2012 :)

Introduzido originalmente nesta postagem do blog para o lançamento do K2 v2.6.2 ( http://getk2.org/blog/1068-k2-v262-now-available ):

Então, como você produziria diretamente campos extras individuais em suas substituições K2? Simples. Basta fazer algo assim (por exemplo, em item.php) para obter o nome do campo extra:

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

Para obter o valor extra do campo, basta fazer o seguinte:

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

Agora substitua EXTRAFIELDALIASHERE pelo alias real do campo extra que você deseja gerar.

1
fevangelou