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


8

Saya sedang membangun situs yang menggunakan bidang ekstra K2, tapi saya mengkustomisasi output 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; ?>

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

Saya sedikit peretasan, jadi saya terjebak pada yang ini.

Jawaban:


9

Tergantung pada dokumen .php apa yang Anda gunakan - 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.


Saya di item.php dan itu benar-benar berfungsi. Terima kasih!
Brian Peat

Tidak masalah!!! Saya menghabiskan banyak waktu mencari tahu ini, senang itu bisa membantu orang lain.
Faye

FYI, kode itu awalnya ditulis untuk saya oleh Jordan. Dia ada di sini juga, dia tahu hal-hal yang luar biasa dan membuat hal-hal bekerja untukku ketika aku terlihat seperti akan menangis. joomla.stackexchange.com/users/75/jordan-ramstad
Faye

1

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 (misalnya di 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.


-3

Ini dapat dilakukan dengan mengganti bahasa sekarang, Menghindari menimpa peretasan Anda saat Anda meningkatkan K2. Cari K2_DATE_FORMAT_LC konstan

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.