it-swarm-id.com

Bagaimana cara menarik data dari bidang ekstra K2 yang merupakan array?

Saya sedang membangun situs yang menggunakan bidang ekstra K2, tapi saya menyesuaikan hasilnya jadi saya tidak hanya menarik seluruh blok bidang tambahan.

Biasanya sesuatu seperti ini berfungsi untuk bidang entri tunggal:

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

Tapi saya memiliki bidang yang merupakan daftar multi-pilih dan saya ingin menarik seluruh array ke dalam baris di halaman item saya.

Saya sedikit peretasan, jadi saya terjebak pada yang ini.

8
Brian Peat

Tergantung pada dokumen .php apa yang Anda masuki - jika Anda berada di file item.php, atau kategori-item.php, yang berikut ini akan berfungsi.

Di bagian atas dokumen, tambahkan kode ini:

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

Lalu, di mana pun Anda ingin memanggil nilai bidang yang diisi, gunakan ini:

<?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 bekerja sedikit berbeda, seperti halnya Modul K2.

tag.php - Anda tidak perlu kode tambahan di kepala, yang berikut ini akan memanggil data bidang Anda.

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

Sekali lagi, dengan module_k2_content, Anda tidak perlu panggilan data teratas. Dapatkan data lapangan Anda dengan cara ini:

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

Semoga itu bisa membantu.

9
Faye

Balas @reactionfaye di atas benar. Sebagai referensi, ini telah menjadi bagian dari K2 sejak Nov 2012 :)

Awalnya diperkenalkan di posting blog ini untuk rilis K2 v2.6.2 ( http://getk2.org/blog/1068-k2-v262-now-available ):

Jadi, bagaimana Anda akan secara langsung menampilkan bidang ekstra individual dalam penggantian K2 Anda? Sederhana. Lakukan sesuatu seperti ini (mis. Pada item.php) untuk mendapatkan nama bidang tambahan:

$ this-> item-> extraFields-> EXTRAFIELDALIASHERE-> nama

Untuk mendapatkan nilai bidang tambahan, Anda cukup melakukan ini:

$ this-> item-> extraFields-> EXTRAFIELDALIASHERE-> nilai

Sekarang ganti EXTRAFIELDALIASHERE dengan alias sebenarnya dari bidang ekstra yang ingin Anda hasilkan.

1
fevangelou