Comment puis-je extraire des données d'un champ supplémentaire K2 qui est un tableau?

8

Je construis un site qui utilise des champs supplémentaires K2, mais je personnalise la sortie, donc je ne tire pas simplement le bloc de champs supplémentaire entier.

Normalement, quelque chose comme ça fonctionne pour les champs à entrée unique:

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

Mais j'ai un champ qui est une liste à sélection multiple et je veux tirer l'ensemble du tableau en ligne sur ma page d'article.

Je suis un peu un hack, donc je suis juste resté coincé sur celui-ci.

Brian Peat
la source

Réponses:

9

Cela dépend du document .php dans lequel vous vous trouvez - si vous êtes dans le fichier item.php ou les fichiers category-item.php, les éléments suivants devraient fonctionner.

En haut du document, ajoutez ce code:

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

Ensuite, partout où vous souhaitez appeler la valeur du champ rempli, utilisez ceci:

<?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 fonctionne un peu différemment, tout comme les modules K2.

tag.php - vous n'avez pas besoin du code supplémentaire dans la tête, ce qui suit appellera vos données de champ.

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

Encore une fois, avec le module_k2_content, vous n'avez pas besoin de l'appel de données supérieur. Obtenez vos données de terrain de cette façon:

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

J'espère que cela pourra aider.

Faye
la source
Je suis dans item.php et cela a totalement fonctionné. Je vous remercie!
Brian Peat
Aucun problème!!! J'ai passé plusieurs heures à comprendre cela, heureux que cela puisse aider quelqu'un d'autre.
Faye
Pour info, ce code a été écrit à l'origine pour moi par Jordan. Il est ici aussi, il sait des trucs géniaux et fait fonctionner les choses pour moi quand j'ai l'air de pleurer. joomla.stackexchange.com/users/75/jordan-ramstad
Faye
1

La réponse de @reactionfaye ci-dessus est correcte. Pour référence, cela fait partie de K2 depuis novembre 2012 :)

Initialement présenté dans ce billet de blog pour la sortie de K2 v2.6.2 ( http://getk2.org/blog/1068-k2-v262-now-available ):

Alors, comment sortiriez-vous directement des champs supplémentaires individuels dans vos remplacements K2? Facile. Faites simplement quelque chose comme ça (par exemple dans item.php) pour obtenir le nom du champ supplémentaire:

$ this-> item-> extraFields-> EXTRAFIELDALIASHERE-> nom

Pour obtenir la valeur de champ supplémentaire, vous devez simplement procéder comme suit:

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

Remplacez maintenant EXTRAFIELDALIASHERE par l'alias réel du champ supplémentaire que vous souhaitez afficher.

fevangelou
la source
-3

Cela peut être fait avec un remplacement de langue maintenant, en évitant d'écraser vos hacks lorsque vous mettez à niveau K2. Recherchez la constante K2_DATE_FORMAT_LC

shanDB
la source