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

8

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.

Brian Peat
fonte

Respostas:

9

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.

Faye
fonte
Estou no item.php e isso funcionou totalmente. Obrigado!
Brian Peat
Sem problemas!!! Passei muitas horas descobrindo isso, feliz por poder ajudar outra pessoa.
Faye
Para sua informação, esse código foi originalmente escrito por Jordan. Ele também está aqui, sabe coisas incríveis e faz as coisas funcionarem para mim quando pareço chorar. joomla.stackexchange.com/users/75/jordan-ramstad
Faye
1

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.

fevangelou
fonte
-3

Isso pode ser feito com uma substituição de idioma agora, evitando sobrescrever seus hacks ao atualizar o K2. Procure a constante K2_DATE_FORMAT_LC

shanDB
fonte