Wie ziehe ich Daten aus einem zusätzlichen K2-Feld, das ein Array ist?


8

Ich erstelle eine Site, die zusätzliche K2-Felder verwendet, aber ich passe die Ausgabe so an, dass ich nicht nur den gesamten zusätzlichen Feldblock ziehe.

Normalerweise funktioniert so etwas für einzelne Eingabefelder:

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

Ich habe jedoch ein Feld, das eine Mehrfachauswahlliste ist, und möchte das gesamte Array in eine Zeile auf meiner Elementseite ziehen.

Ich bin ein bisschen ein Hacker, also bin ich einfach bei diesem hängen geblieben.

Antworten:


9

Dies hängt davon ab, in welchem ​​.php-Dokument Sie sich befinden. Wenn Sie sich in item.php oder in den Dateien category-item.php befinden, sollte Folgendes funktionieren.

Fügen Sie oben im Dokument diesen Code hinzu:

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

Verwenden Sie dann, wo immer Sie den Wert des ausgefüllten Felds aufrufen möchten, Folgendes:

<?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 funktioniert etwas anders, ebenso wie die K2-Module.

tag.php - Sie benötigen keinen zusätzlichen Code im Kopf. Im Folgenden werden Ihre Felddaten aufgerufen.

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

Auch hier benötigen Sie mit dem module_k2_content nicht den obersten Datenaufruf. Holen Sie sich Ihre Felddaten folgendermaßen:

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

Ich hoffe, das hilft.


Ich bin in item.php und das hat total funktioniert. Vielen Dank!
Brian Peat

Kein Problem!!! Ich verbrachte viele Stunden damit, das herauszufinden, froh, dass es jemand anderem helfen konnte.
Faye

Zu Ihrer Information, dieser Code wurde ursprünglich von Jordan für mich geschrieben. Er ist auch hier, er kennt sich großartig aus und lässt Dinge für mich funktionieren, wenn ich so aussehe, als würde ich gleich weinen. joomla.stackexchange.com/users/75/jordan-ramstad
Faye

1

Die Antwort von @reactionfaye oben ist korrekt. Als Referenz ist dies seit November 2012 Teil von K2 :)

Ursprünglich in diesem Blog-Beitrag für die Veröffentlichung von K2 v2.6.2 ( http://getk2.org/blog/1068-k2-v262-now-available ) vorgestellt:

Wie würden Sie einzelne zusätzliche Felder in Ihren K2-Überschreibungen direkt ausgeben? Einfach. Tun Sie einfach so etwas (z. B. in item.php), um den zusätzlichen Feldnamen zu erhalten:

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

Um den zusätzlichen Feldwert zu erhalten, gehen Sie einfach wie folgt vor:

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

Ersetzen Sie nun EXTRAFIELDALIASHERE durch den tatsächlichen Alias ​​des zusätzlichen Felds, das Sie ausgeben möchten.


-3

Dies kann jetzt mit einer Sprachüberschreibung erfolgen. Vermeiden Sie das Überschreiben Ihrer Hacks, wenn Sie K2 aktualisieren. Suchen Sie nach der Konstante K2_DATE_FORMAT_LC

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.