web-dev-qa-db-fra.com

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

Je construis un site qui utilise des champs supplémentaires K2, mais je personnalise la sortie pour ne pas extraire uniquement le bloc de champs supplémentaire.

Normalement, quelque chose comme ceci 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élections multiples et je veux tirer le tableau entier dans une ligne sur ma page d'item.

Je suis un peu un bidouille, alors je suis resté coincé sur celui-ci.

8
Brian Peat

Cela dépend du document .php dans lequel vous vous trouvez - si vous vous trouvez dans le fichier item.php ou dans 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, où que vous souhaitiez appeler la valeur du champ renseigné, 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 l'en-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 contenu du module_k2, 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 ça t'as aidé.

9
Faye

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

Introduit à l'origine dans cet article de blog pour la publication de K2 v2.6.2 ( http://getk2.org/blog/1068-k2-v262-now-available ):

Dans ce cas, comment générer directement des champs supplémentaires individuels dans vos substitutions K2? Simple. Faites juste quelque chose comme ceci (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, procédez comme suit:

$ this-> item-> extraFields-> EXTRAFIELDALIASHERE-> valeur

Remplacez maintenant EXTRAFIELDALIASHERE par le pseudonyme du champ supplémentaire que vous souhaitez générer.

1
fevangelou